Translate

Showing posts with label project. Show all posts
Showing posts with label project. Show all posts

Wednesday, February 25, 2026

After 22 years: some stats

Today is 22nd anniversary for Class Viewer. Is a little app that has carried me much and is still strong somehow. Where naturally that is from people showing interest in a lightweight tool that just works.

Lifetime downloads according to SourceForge as am checking now 11:50 am EST: 54509.

Total countries: 175

So that is same as before where yeah that's most of them. Cool. Who knew 22 years ago would circle globe? I didn't.

Simple thing though: build tools that just work.

Thursday, January 08, 2026

Open source can be insurance

Over 20 years ago back in early 2004 had no idea what to expect on SourceForge when put up Class Viewer for Java. Now am like, hey I insured my position in software development with a future forward minimalist UI and simplicity for easy maintenance.

Yeah. It can be that simple! Isolate a problem you want fixed? Fix as simply as you possibly can? And open source might just...but odds are NOT in your favor.

I like that hint towards Hunger Games as yeah is a basic try that many can do! So managing of expectations is smart. But you are likely to learn things.

Myself? Am pondering how I did it. Global for two decades and AI are helping me understand why. Here's some screenshots to cover last year. Yeah.


Tuesday, September 20, 2016

Useful matters

Having things public is thrilling but understandably I think one wants that to go ok, and in the past talked more about my open source Class Viewer, which is an app for Java software developers, as if frustrated with lack of direct feedback. But I think people could read between the lines was also maybe a bit relieved actually? So there are two sides to it, as really want feedback and also can be wary of it.

Which to me is ok as there is a range of human behaviors that can be ok. And not everyone should fit into some specific type of behavior and not saying people push that but have maybe thought that myself. Now am like, lots of ways.

And now am glad the project is still being downloaded, as feel then like it is useful to people which is what is important, and I like to use it. And that perspective also helps me discuss it, as focus less on my feelings like being uncomfortable with even idea of a lot of attention, and think more about how it can best be useful.

More posting on Class Viewer by me has now moved to its blog on SourceForge, which is a natural place and actually that helped boost downloads quite a bit. Which made sense to me, versus talking about it here.


James Harris

Saturday, November 28, 2015

Talking things around open source app

Realized should do a post talking about my open source software application which is called Class Viewer which is for Java developers. It has continuing support from me, but thankfully is a lightweight, low maintenance in my opinion, project which really hasn't changed very much in over a decade.

There are continuing downloads and thank you for those downloading! Where lately seems to be around a quarter of a thousand per month. So not TONS but more than enough to keep me satisfied that there are still people out there who need it. Which is one of the greatest feelings ever which is why I don't talk about it too much. Have talked more lately because passed the 10 year mark recently so feel safer.

For the first time that I know of since had country counts this year might not pass downloads from over 100 countries, which got me a bit concerned though it's not a metric that I really understand? Because looking at the map, the BIGGEST drop is across the continent of Africa. Oh and in the Middle East.

Which means that it's really just about mainly people in Africa who for some reason or other seem to download far less than people on any other continent which maybe is about number of Java developers? So it's just about percentages? Regardless still like Africa, no negatives in their direction just wondering a bit about me and my product and what that might say.

Having a very lightweight specialized app for a very specialized group of people is VERY convenient. And I do use Class Viewer myself, where for me it's usually most important when I decide to do a bit of coding as no longer code all the time, so routinely have to refresh my skills and it's very good for quick lookups.

So short of it is, thank you for continuing downloads. Class Viewer support is ongoing, and I think I'm aiming for 2018 for an updated version unless am pushed sooner which could happen if got feedback needing something, which has never happened, or changes are made to the Java language which require it.


James Harris

Thursday, August 27, 2015

Every method in Java String class with an array

Here's another example of what Class Viewer can give you in terms of information about a class as here are all the public methods in the String class with an array in any way shape or form, and I'll explain after why I got it:

static String valueOf(char[])
static String valueOf(char[],int,int)
static String copyValueOf(char[])
static String copyValueOf(char[],int,int)
static String format(Locale,String,Object[])
static String format(String,Object[])
void getBytes(int,int,byte[],int)
byte[] getBytes(java.nio.charset.Charset)
byte[] getBytes(String) throws UnsupportedEncodingException
byte[] getBytes()
void getChars(int,int,char[],int)
static String join(CharSequence,CharSequence[])
String[] split(String)
String[] split(String,int)
char[] toCharArray()

Oh and I got that list by highlighting the methods in the Results Window and using Ctrl-C. Then just copied over and decided to bold it for visibility. If you right click that doesn't work, as, um, I didn't build it to work, so that's on my to-do list now as a fix. Right now on three year schedule for updates I think. So next scheduled update to the extent anything is scheduled is 2018.

So there are 15 public methods in the Java String class that handle an array, either taking one or giving one, which is maybe a factoid and answer to a trivia contest as I don't know what use it is, but it demonstrates the kinds of things you can do.

And I got that list by double-clicking on the symbol for array which is [] in the list of methods in the left screen.

Found myself checking my Class Viewer after a Java update which is a habit. For those wondering about support for the project, most of my concern is with making sure latest updates to the Java language haven't changed how it behaves.

This time was very useful as I thought I had updated to Java 8 Version 60 which is the latest and checked my version in Class Viewer and it said 1.8.0_25, which is Java 8 Version 25, and yes I could have my program display it that way, but I don't want to keep up with it that closely, so it just gives you direct what Java says its version is.

So I updated, again. Not sure why I had to do it twice, but at least I knew.

It now says: Java version 1.8.0_60

Then doing my routine tests found that Chrome browser didn't work. Got some message asking if I wanted to restart Chrome. First I said no, and nothing. Tried again, and said yes, and nothing, so switched in ClassViewerConfig.xml to Firefox, restarted the program which you have to do so it reloads the config file, and it worked ok. So not sure if was some one-time thing or if Google has done something with Chrome, where it doesn't let my program open it. (But maybe am just being paranoid. Will edit later if it works later.)

And that was enough work for the morning.

So yes, maintain Class Viewer so keep up with how it works when there are updates to Java. And oh yeah, wouldn't mind feedback. I've never gotten any unsolicited.

So for over a decade it's been figure out what I think would be good, find bugs if I notice them, and that's how development goes. Feel free to point out anything I should know in the comments below.


James Harris

Tuesday, May 19, 2015

Opening Class Viewer with a class

While my open source project Class Viewer is for Java developers, I have pondered ways of making it more useful to others like coding instructors or software companies, which is why I finally got the opening to a class to work. Here is an example of a screenshot with Class Viewer being opened to its own class:


Clipped the bottom a bit, and it's really more small than I thought, um, ok, so the point of such a thing is that you can open Class Viewer to some default class.

Command line instruction for the above:

java com.jstevh.viewer.ClassViewer ClassViewer

If you wanted to default to String class it would be:

java com.jstevh.viewer.ClassViewer String

And that's with code unpacked from the jar, of course, which is what I recommend you do so that you can get full access to the classpath, and local files.

And I'm thinking some software company could use that to direct people to some code or something and I'm vague as it's kind of a vague notion. Kind of thing you put there and see if people need it or not.

Oh yeah, Class Viewer is a JApplet which was because I wanted it to be very web centered from the start, now over a decade ago. Got a vague idea about it being useable to let people browse your codebase online. Kind of like an easy reference guide. So this feature is also meant to help you open to info about your own code, in a webpage, or that's the idea.


James Harris

Sunday, April 26, 2015

Class Viewer 5.1 Update Release

There is a new update release for my open source project Class Viewer, which I decided to call version 5.1.1 which updates ClassViewerConfig.xml to Java Enterprise 7, and fixes a problem with getting directly to JavaDocs.

And my apologies on missing something when I updated before to the new JavaDocs format, as I failed to notice that it was not being used for Java Enterprise at version 6, where it is now at version 7, still not being used, and now guessing it has to do with version number. So I have the code see if it's under 8, and if so, it uses old JavaDocs format, otherwise it will try the new.

Problems in this area will just mean you get brought to the JavaDocs page, but not directly to the method.

Luckily I was working on a personal project and went to look up a method, and was surprised when it didn't work right! Which goes back to the importance of using your own product.

If you're using the project and wish to upgrade I have direct download links on the main Class Viewer project website page. Or you can go to the Class Viewer SourceForge page.

Oh yeah, project website is not mobile friendly as of yet as I'm still assuming people will be using on desktop. So not sure it's worth the effort.


James Harris

Monday, February 16, 2015

Benefits of community perspective

Seems to me when you think about community, especially a healthy one, you don't imagine people charging each other for everything. And in fact money is usually considered separately from within community though important for the community to have. And that perspective helped me out immensely when I started trying to figure out what was going on with my open source project.

When I first officially became an open source developer by putting my project Class Viewer on SourceForge back February 2004, I wasn't sure what might happen. Guessed anything from it could simply bomb or that it could bring vast amounts of attention for which I wasn't sure I was ready. And vaguely thought that if the latter there might be some way to monetize to some extent.

Over a decade later I'm puzzling over what actually happened, and gained insights by realizing that I provided a valuable tool for the Java software developers community as evidenced by continuing downloads, and it was best to push the idea of money completely out of the picture.

And from a community perspective I'm quite satisfied as I posted memorializing 10 years, where I noted over thirty five thousand downloads from over 150 countries, which I think can be considered indication of usefulness. And downloads continue.

With so many posts on other subjects some may wonder if project development will continue, and as far as I'm concerned it will as the project is still supported. Just don't have anything else I want it to do as of yet, and I've been pondering other subjects.

It's interesting to me that the more community level your project is, the less money I think will be involved, unless you can pull in advertising, as people don't tend to associate handing money over for community type things. Or that's my theory, as I sat down and worked out my own theory of money, which I've posted about before, as yeah, still need to make it, but a community type project is NOT the way, in my opinion.

And have to emphasize it's my opinion as maybe others find something different, but I've seen plenty examples by now that seem to indicate the truth of that perspective, and why wouldn't it be that way? Fostering community is a different world than trying to get people to hand over money for some product or service.

And in fact profit as a primary motivation has long been seen as detrimental to community.

So there's kind of a conflict I think where people who figure out how to make money are currently the heroes, because hey, plenty of people want to be rich, while those with more community type project, like a lot of the work to build web structure globally, which is mostly open source, are showing up in the news as being impoverished.

Of course if you understand money then you know why, and it's no more of a big deal than noting that water is wet.


James Harris

Monday, September 15, 2014

Building a Java 8 JavaDocs link

One of those features I definitely prize in my open source app for Java developers called Class Viewer is the ability to go to JavaDocs to the method. And for that to happen the app has to build the link for you, like here's an example that I just did with it:

http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.util.Locale-java.lang.String-java.lang.Object...-

And that works for Java 8, where you can see the '8' in the link, where that is in the base which is set in ClassViewerConfig.xml--where you can edit with a text editor so easy to make changes--and the app builds out the rest of the link where I picked a method from the String class for demonstration purposes:

static String format(Locale,String,Object[])

Putting in italics so it stands out. And with that as a reference you can see what the app has to do, which is just loop through that, which it gets from Java Reflections and is what it has after it strips off package information, and switch that to the format that was just implemented for getting to that method in JavaDocs.

So yeah, I kind of had a bit of a freak out a few months ago as I knew Java 8 was coming out and had changes but didn't really dig into them, which I guess was a mistake, as I made some changes to Class Viewer, and thought that was it, until I checked going to JavaDocs and it just didn't work! Then I realized there had been a change.

For the curious you can go to JavaDocs before Java 8 and see the old format. What I'll say is that I like this new format as it's MUCH easier to code, which is what matters to me.

Oh yeah, it had some quirky stuff and maybe I missed something so if anyone finds something PLEASE let me know, as like Object arrays go to Object..., but check out how other arrays are handled with this example:

http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#copyValueOf-char:A-int-int-

And that's from:

static String copyValueOf(char[],int,int)

So you can see that here the char[] turns into char:A, which I noticed immediately and coded up, only to thankfully try something with an Object array and notice it didn't work! So yeah, not completely sure I got everything, but...well it works for everything I've tried.

One of the best things with this new approach is it really is more fun to code and removes issues with handling spaces, where if you wonder you can go back to earlier versions.

At first I was going to go to the newer version without support for older JavaDocs and realized that was silly since the app could just check your Java version, which it does from the System. So if you have an older version before Java 8, it will use the old way to get to JavaDocs.


James Harris

Saturday, September 06, 2014

Class Viewer problem space

One of my posts covered my ideas about innovation and the problem space, which I see as the thing your application is handling. Wanted to have a post where I could quickly see what I thought the problem space was for my open source application Class Viewer, so copying from that post to put here:

Original Class Viewer problem space: how to get class information quickly, about public methods, fields, constructors and get to Javadocs.

And the reason to have that readily available is so I can evaluate where I think product direction should go, and maybe see if I want to expand that, which I think I have. So I'm going to update it.

Possible Class Viewer problem space: how to get class information quickly, about public methods, fields, constructors and get to Javadocs, open a Java file, and get basic system information like classpath and Java version. Works as a tireless assistant.

One of the things that's interesting to me is, did I really need to expand from the original problem space?

Turns out I felt that there was more information a developer readily needs, like classpath, where sometimes you do something and wonder, and Class Viewer gives a quick way to check. Same thing happens with the Java version, where I find I'd wonder while doing something, and now it's easy to check.

I'd prefer to not necessarily have all those things in there. And just went back to add the "tireless assistant" part which allows me to imagine a LOT more development paths.

So that's kind of important. Seeing Class Viewer in a more narrow way for the last decade worked out great and allowed me to do very few product iterations. But at times I've wondered if I wanted to do more. Then again, I could just create an entirely new product and leave the current one alone. However, so far it looks like things are in the same direction. But maybe it's too open ended now? How do I bound the space back to something more realistic? After all, it's unlikely that I'll do tons of new development though with that problem space I could go wild.

Class Viewer problem space: how to get well presented class information quickly, including getting to Javadocs, and other relevant information important for development that is available, like classpath, as well as open a Java file if possible, quickly. Using third party tools if available.

That might be more like what's been done and now I'm seeing a focus on quick access, presentation, and using other applications to do things. Back to a more narrow focus, so losing the "tireless assistant" thing.

Maybe I'll fiddle with all of these things later, but for now gives me something to think over.


James Harris

Starting Class Viewer with a class

One of the features now working with the current Class Viewer is the option to start with a class.

For instance the following will open Class Viewer with the String class:

java com.jstevh.viewer.ClassViewer String

The way that works is like if you typed that in yourself, so if it can't find the class you give Class Viewer will simply give you the same message it would give if you typed that in yourself.

One of the things I'd guess this option can allow you to do is push what you want on screens in a classroom. Or if you wish to start with a script, which I guess you could also do in a classroom.

Tuesday, July 15, 2014

Opening a Java file with Class Viewer

One of the features of my latest version of Class Viewer is the ability to open a local Java file. The way it works is that you have the packages for your classes setup in ClassViewerConfig.xml as usual, but the Local option should be set to "Yes", where the case does not matter, if you wish to open files rather than go to javadocs.

Now if you double-click on a method in the Results pane, or click on the Documents button, the application will go find the Java file, relying on your classpath so that must be set properly, look into the file to find the line number of the method, and call your preferred text editor.

If your preferred text editor takes a line number argument then it will get the call and you should have the file opened to that line number. Which I think is really cool. Well, it's fun to me.

If your text editor does NOT take a line number argument when called, Class Viewer will open up a pop-up window telling you the line number of the method. But you tell Class Viewer whether it does or not, in ClassViewerConfig.xml, so if you say it does take a line number then it will try that call with the line number.

If your text editor just opens the Java file and doesn't go to the method, you can assume it doesn't take the line number argument, or you do not have it set to take a line number argument in the ClassViewerConfig.xml file. Remember editing that file is easily done with a text editor, which is how I always do it.

The default text editor in ClassViewerConfig.xml is gedit as I think that one is well-known and it does take a line number in the argument! So I consider it a recommended text editor. It takes the line number with a parameter which is "+". So a call is like gedit ExampleFile.java +151 to go to line number 151 in ExampleFile.java as an example. That parameter is set in the config file as well.

Was almost tempted to write my own text editor to add this capability and realized that was silly, when Class Viewer could just call one. I think applications have great potential in calling other applications.

Class Viewer started in that direction by calling the browser anyway, and it's natural to continue down that path.

It's just so simple to let the application do it.


James Harris

Sunday, June 29, 2014

New release: Class Viewer 5.1

The new release for my Class Viewer is out, and I'm calling it version 5.1 where it implements changes I said I was considering in a prior post. One thing I decided to do is just leave the packagedirectory.xml name completely behind. So it doesn't check for it. But that's just a file name change to ClassViewerConfig.xml which is easy enough to do.

Did some code clean-up which included getting more generics implemented.

Kind of relieved to have the new release out. It was easy enough from a coding perspective but I'm more concerned about doing these things in a more sensible way so it felt different from when I cared less.

Thinking more about marketing by realizing it's not really about me so much as if I can bring value to people who like the application then that's a good thing. So I'm adjusting my perspective.

I think it's worth it to--I guess proper phrase is--upgrade, as you have a more sensible name for the xml configuration file. And you can keep your old packagedirectory.xml by just renaming it to ClassViewerConfig.xml so easy and that's what I did. And there is actually one less menu item on an already simple interface, and oh yeah, the web links are meant to be helpful so are now under "Help" on the top menu:

Class Viewer main website on SourceForge

Any comments appreciated. Putting this out during the summer helps make it less pressured so I have lots of time to make sure everything is working well before things get busy again come September.


James Harris

Saturday, June 21, 2014

Possible Class Viewer changes

Been thinking about some changes to my Class Viewer app which I think of as more cosmetic which makes me wonder about doing them, but thought I'd talk the potential changes out ahead of time versus just doing them and seeing what happens.

One thing I'd like to do is get rid of the "Weblinks" drop-down from the top menu, and put all the links into the "Help" drop-down, which I think makes more sense. Also the one link not mine I might have in the help section is: docs.oracle.com/javase/tutorial

That makes sense to me as it's a great tutorial on Java which I've used myself to refresh. And it would fit there I think.

Also I'd like to rename packagedirectory.xml to ClassViewerConfig.xml which I think makes more sense. I'm thinking about putting in more functionality into that xml file, and it's really a lot more than just a package directory at this point.

If I make that change would make it look for the old file if it didn't find the new one so it wouldn't force people who were long-time users to change the name.

Very speculative I've wondered about some kind of xml format for handing information to other applications.

But the reality of what I could do say, overnight if I felt like it, would be the first set of changes, removing "Weblinks", consolidating the useful current links under "Help" and adding the Java Tutorials link, and changing the name of packagedirectory.xml to ClassViewerConfig. xml are easy enough to do.

Oh yeah, I've realized it's easier to use this blog for help and instructions, which is actually kind of industry now. A blog post is easy to update, and can be as specialized as I need it, which is why there has been a shift in that direction.

Thing is, I can blog about my app when I feel like it, like in this post, or otherwise rant and rave about just about anything I want.

Blogs are just so freaking useful.

Oh yeah, any Class Viewer users who have any thoughts on these possible changes, please let me know.

Easiest way is to comment on this post.


James Harris

Saturday, May 24, 2014

Global idea movement

Back in 2004 when I was considering doing an open source project I had many vague notions about why it would be a good idea, but now more than a decade later I can cheerfully say that my reason now for wild support is global idea movement. As I noted in my post on the 10 year anniversary of my project, it has been downloaded from over 150 countries, and could I have done that with a moneyed project?

Can you imagine trying to market a paid product in over 150 countries?

I guess Google and Facebook are learning. But even for them their base products are free: Google search, and well, Facebook.

And oddly enough Facebook came out the same month as my little app, and more power to them! I don't envy that Zuckerberg guy. But my ideas are in probably about as many countries as his.

I'll take that, thank you very much.

When it comes down to it, a few people can build a mega corporation that can handle all the issues of global marketing, production, development and sales, but many, many, many  more people can watch in awe as their open source project gets downloaded from all over the world.

So intriguingly, take the money out of it, and ideas can move--globally.

That's one of the greatest gifts of our modern web.

But then again, with the money involved they can as well. It kind of makes you wonder.

So it's kind of an interesting thing we can see in our time, which I think is remarkable--as in worth remarking upon.

And where better to remark than on my own blog where ideas rule?

But one does wonder...

Regardless I feel I can confidently say from my own experience that if you want to most easily have people all over the globe using something you developed then open source is clearly a way. For a paid product I'm sure you have a much bigger hill to climb.


James Harris

Wednesday, May 07, 2014

My view on problem space and innovation

My personal philosophy on development is that the problem space is the most important thing. And the problem space has to do with: what exactly is the purpose of this application, why must it exist?

The way I think that works usually is you code something for the initial problem space, which fulfills a need, and you watch users with the thing, which can help you to better formulate the outlines of the problem space, which can push you to add features or refine the application.

And that can lead to rapid development, with lots of iterations as you approach a better and better solution to a problem space that gets ever more defined.

Or you can just solve the problem space.

For instance, my open source application Class Viewer has very few iterations, almost no innovation, and hasn't really changed very much in over 10 years!

But as far as I am concerned it solves a particular problem space, which is how to get class information quickly, about public methods, fields, constructors and get to Javadocs.

Turns out I needed that problem space solved and had been frustrated years ago with trying to do those same things by other means.

The biggest innovation from the original product has been also letting you open a Java file in a text editor.

What's interesting to me is how the simple concept of a problem space can explain when you will see a lot of iterations and innovations versus when you should not. But I think there can be a problem if someone feels they MUST have a lot of iterations just because.

Now generally you will NOT solve the problem space with a particular application but only approximate a solution with ever greater accuracy. For instance, smartphones today are vastly different from the original cellphones.

The problem space of: what should this mobile computing thing do for users?--is evolving, growing, expanding and ever changing.

It's hard to imagine when it might be completely solved!

The Java language itself operates in the problem space of: how do you best tell a computing device what to do?

And another area is the social app problem space which can probably never be completely solved and we're seeing lots of applications out there trying to solve various pieces of it and flesh out the problem space, and I use quite a few of them: Blogger, Google+, Facebook, Twitter, Pinterest, Instagram, among others.

But that's not a surprise: being human is kind of complicated and connecting with other humans is VERY complicated. It's a wonder they're getting by with as little innovation as they're doing so far.

And that is my philosophy on how the problem space helps you understand when innovation is necessary, which also lets me explain why my own application gets away with so little.

Solving a major problem space is something very few developers will ever experience.

But if you DO solve a problem space you will look with amazement at an application which is just what it needs to be. Such a thing I suspect is like a unicorn for most of the development world, as in they have never seen it and presume it's just some mythical beastie which can not exist in the real world.


James Harris

Sunday, April 20, 2014

Why not a Java sandbox?

One of those things I've finally admitted to myself is some frustrations with how Java is being handled, especially with regard to the negative news on security. And I'm going to go out of my area with a suggestion about a sandbox, but it lets me discuss some issues related to my own open source project Class Viewer so I'll go for it.

Security is of course a big deal and I think finding ways to make it easy for developers is a great approach, where I don't think it's easy right now with Java and mostly I ignore the issue.

So my Class Viewer can't be run as an applet now because I haven't bothered with security certificates, and I've been paranoid that eventually they might block it from calling applications where now it calls the browser and can call a text editor, as well as open files where it looks for its own xml configuration file and Java files.

There is no interest from the app in calling anything else, so I'm like, why can't there be a sandbox where applications like mine can operate without security being an issue because they're isolated from anything dangerous on the device?

And a Java sandbox could have things like pictures, music and video, where access is open, but an app can't go wandering off into other things like system files.

As vague as that may sound it might be as simple as having an application tell the JVM that it is in a sandbox so that it has clearance, and then only being allowed access to files in certain folders, with system file folders always excluded.

Or I guess, as like I said, it's not really in my area. But it seems to me that in a security conscious world, Java should make it easy for any developer to handle security.

Currently I've not done a lot with much of the structure in Java for meta-information around the build either, so my app doesn't tell you things like build information in the meta. I'm debating adding that info but it seems like useless work for the developer that the compiler could do, like with: javac SampleFile.java -build

Then the compiler could add the next build number and make that entire freaking set of info that doesn't interest me most of the time. Oh yeah, and if I DO decide to do more with security, how do I get a certificate for Class Viewer anyway?

And should I think better about a certain company I will not name with the hard task of managing Java?

I really want success with one of the most valuable intellectual items out there as the Java language just keeps amazing me for what it can do. But I now cringe every time I read someone knocking it, where lately it's been about security.

I want that opening for haters against the language closed. And I don't see myself thinking better about a certain company until that's done.


James Harris

Tuesday, February 25, 2014

As of today 10 years

Today marks the 10 year milestone from when I registered my open source application Class Viewer for Java on SourceForge, and I guess I should commemorate that with a post. So here it is.

Downloads over the last 10 years are 35367 from over 150 countries.

That last one is what keeps me thinking and open source software is definitely a way to put something out there that people all over the world can use.

I highly recommend putting something out there.

For must of us not celebrities, rich or whatever, how many ways do you have to in any way speak to your planet? Give something useful for it?

But as magnificent as that sounds typing it, perspective is that popular apps have billions of downloads and have downloads from just about every country.

Enough said on that subject!

And my application is not done. I think I may have learned a few things over the last ten years and I still use it.

It has been such a cool adventure so far. Pleasantly quiet in most ways but there have definitely been some interesting things over the last ten years.

Thanks for the interest over the last decade! There is a profound pleasure in putting something out there that people choose to use.

I'll end with screenshots showing the country counts:






Wednesday, January 15, 2014

In praise of the little app

Coming up on 10 years with my lightweight application Class Viewer on SourceForge, I've put out a request for feedback with no response at the time of the writing of this post. But that's NOT a surprise. I have almost ten years of experience with this project and over that entire time period I have almost no feedback beyond downloads. Which isn't terrible. It's GREAT to be downloaded.

But it occurs to me that I should try things to see if it might not entice people to talk about their use of the project--assuming it's being used after being downloaded--by talking more about the design philosopy around it.

So, for instance, it's deliberately small and lightweight. I like little apps.

Years ago when I was developing I got frustrated with development tools that took forever, in my opinion, just to load for me to do something simple, like get some info. Also I got hostile towards IDE's that suggested methods to me! I considered it cheeky.

I pick my methods. I don't like some tool pushing a method at me.

The project is also stateless, deliberately, so that every time you open it, you have a clean slate. I even made that emphatic by giving you a lot of blank screen when it loads versus some "splash". I don't like splash with apps.

So there is a LOT of my possibly peculiar philosophy in my application. And it will be 10 years in February where I've stuck to it.

Also along with the above is the principle, only just enough!

I don't like feature creep.

In addition I think that needing a lot of documentation for simple application probably means you have a design problem. That's just my opinion.

However, I think it kind of ironic as mobile devices begin to really take over that my approach is probably better.

Who wants to have to read a book before they can really use their smartphone? Do you really wish to need to take a course before you can get your tablet really working really well?

Oh yeah, and back in February 2004 when I put Class Viewer up on SourceForge, I was giving the world a web enabled app that didn't care if it was working on the desktop, or as an applet.

To me THAT more than anything else IS the future, when applications will be web enabled, web active, web-centric, or useful completely off the web.

(Should add that applet functionality is mostly gone now until and unless I address things like security certificates and security settings. So yes, I am aware of this issue. I really don't like how Java does security. I think it needs to be entirely re-done from the bottom up. But what does my opinion matter?)

So why so little user feedback with so much in the process?

Maybe because I never really explained.

Next month marks ten years of my Class Viewer for Java.

If you've used the application during that time, hey, do me a favor! Tell me something.

I'm curious to know if any of the above resonates.

Did the app appeal to people with similar notions about software development?

What do you think? Will the web take over with applications blurring the line between the desktop and, um, what else is there? I guess browser?

If you ponder the dominance of an idea, consider the dominance of a name.

With so little feedback I will admit I've tried to keep my spirits up, with things like, web searches.

But what does it really mean?

Search on any web search engine: Class Viewer

How'd I do? An inquiring mind wants to know.


James Harris

Friday, September 06, 2013

Back to software development

Back in 2002 I voluntarily left a position as a software developer at a major corporation. At the time it seemed like a great idea. Now over a decade later, I'm not so sure.

But back then I was serenely confident in myself and very naive about important things in the real world.

So I thought I had a duty to concentrate on what I knew then (and know now) was a major mathematical find. And that find is what mathematicians call a prime counting function, but which I've now found may be more commonly called a prime counter.

As my backup I also had an idea for a little app which was a tool for Java developers to check out basic class information. It was evolving from some test programs I'd written to help me study for the Java certification exam.

Besides, I felt confident that if necessary I could easily step back into the computer field considering how well I had been doing. I had been a lead developer. I had lots of experience with plenty of people recognizing my abilities.

So yeah, I was supremely confident and soon in for a shock.

Despite my ability to prove without a doubt the importance of my mathematical find, I got nowhere with mathematicians. And learned that they don't particularly feel motivated necessarily to help out someone like me. I'm not a mathematician. I'm just some guy who found this thing. Academics are not like what I thought.

But I'd been through adversity, I thought. I grew up as a black kid in the American South. While I think I got a lot of support from my rural South Georgia community, across races, I have to admit standing out as someone who went on to college on a full tuition scholarship and got my degree in physics in four years.

I'm used to finding my way.

But now I'm willing to admit--more than 10 years since my find--that academics have me stumped. I've since made more mathematical discoveries and come to the conclusion that I'm finally facing the greatest challenge of my life in getting any of it academically accepted.

Eventually after that pivotal decision of leaving my comfortable software developer position I found myself in San Francisco, and pondered trying to get back into the field then. That was in 2005 when I moved to California, and ended up, instead, working as a data entry person at a large insurance company.

But it paid the bills, gave me time to enjoy myself in the city, and left me time to focus on my continuing struggles with mathematical recognition, and with my various blogs or other online efforts.

I kept thinking: soon, soon, something will work.

And my open source project which I'd belatedly put on SourceForge in 2004, was still out there as a puzzle, and also as my continuing link to the development world. But I struggled with what to do with it, and wondered if it was even worth the effort.

Today I've given up on courting mathematicians for formal recognition and gone more to the long-term, which is just put the information out there and win in the court of better ideas. Meanwhile I've begun to accept that it's probably a good idea to focus a bit more on a job that actually pays well, as nothing else has come close to how well I was paid, now seemingly long ago, working as that software developer at that major corporation.

Now my open source project Class Viewer is critical in that effort, so I'm looking at it more critically.

Oh yeah, actually got laid off from that data entry job in San Francisco, which was a major blow to my ego. The nerve of those people!!! And then focused more on web efforts, pushing math ideas, and other ideas until I exhausted my naivete and delusions about how the real world works.

Ideas do not necessarily move the world.

Products DO, and groups of people DO.

Individuals with ideas who push them often get called nasty names, and make no money.

That making no money gives you a fascinating thing called--perspective.

It also gives you lots of unpaid bills. My apologies to creditors! I still plan on paying you all back.

My problem is that I don't like to lose. Dogged determination can carry you far in life, or leave you high and dry against a problem you can't seem to solve.

The idealist in me though believes that my actual failure was believing in some people who did not live up to great expectations, but the realist in me realizes that can be just a fact of life.

Great expectations may make a great novel title, but are not necessarily the most pragmatic views.


James Harris