Problem solving is just fun as an exercise and it seems to me that it's useless for me to work puzzles--man-made problems--as I'm just not good at them, and so hate puzzles, but I love real-world problems.
And the US Postal Service is in the news a lot these days about huge losses, as they try to adjust to the changes brought on by the Information Revolution, where people just don't physically mail as much these days, and I came up with a simple idea--which I have sent to them--which is to allow people to scan a letter at one post office, which is printed out, put into an envelope and physically mailed out from another, closer to the letter's destination.
So the idea simply removes physical transport of the letter between post offices, having it go through cyberspace instead to then be printed out and delivered like a normal letter.
And you may think, why bother? Why can't someone just email or fax the info then?
What if they can't, for any number of reasons? Like not giving their email address? Or not having one for the destination? Or not having a fax number, or not having someone who can accept email or faxes?
Or even better, what if they need a postmark date on the letter? Or proof of delivery?
Problem solving can be about abstracting benefits, and if you think that getting a letter from the postal service is just about the information in the letter, then yeah, email covers that, but if you say, but wait, there's more! Then you can see the postal service gives BENEFITS beyond just the information within a letter, like a postmark date.
Postal services then need to shift in the new world by figuring out all the benefits they give, like the postmark date. I'm sure there are many others that are not covered by things like email and fax.
What I'd like would be to be able to mail a payment for a bill where I can't do that payment online in this way, where I go to the post office and scan in the bill, so that I could avoid late fees or worrying about whether or not the letter would make it on-time. Oh, with that variant on the idea, you'd buy a postal money order--probably with a debit or credit card--for the the amount of the bill, and your bill would be scanned to the closest post office to its destination, printed out, and a money order printed out with it, and inserted along with it to be physically mailed to its destination.
The postal service then saves money on physical transportation of the mail, and can charge full price for the cost of the service, which can be a benefit to consumers, who need a physical letter to arrive fast.
And that is a problem solving exercise for the postal service.
And as it IS an exercise I'm not saying it's THE answer, but I think it's worth putting out there along with whatever other ideas are floating around.
Note, any postal service in the world, of course, can use the idea. It's open source!
Which means free as long as I'm given attribution as the source. Though hey, if someone else had it before, good for that person! It's not like it's a complicated idea, but at least at this point as far as I know, it's an idea original to me.
And I say, real world problems are lot more fun than man-made puzzles.
James Harris
Blog ran by me, James Harris. Innovator using meta process analysis. Where ideas rule. Reference site for age of Intelligence.
Translate
Saturday, August 07, 2010
Scan to Post Office idea
Labels:
business,
marketing,
out of the box,
problem solving
Thursday, June 17, 2010
Code work starting on 5.0
Looks like I'm starting code work on Class Viewer 5.0, which may sound strange--don't I know?--but things are different when you're a single developer with a somewhat mature product as Class Viewer is now over 6 years old (first on SourceForge February 2004).
The thing is, you wear all hats. Which means I end up in weird kind of arguments with myself. So the project administrator is worried about a stable baseline, ok have a new beta-5.0 branch, the developer in me wants to toss in all kinds of new features--um, are you sure?--and the project manager is trying to schedule times around my busy schedule for the actual codework. Plus any other jobs that just don't occur to me now while typing this post up quickly.
But at least I feel like I've resolved a lot of issues in my mind that have hampered my interest in development and I'll admit that one longterm possibility is coding for cellphones. And it also turns out that Class Viewer is my primary development tool, so when I think about doing more coding, and opportunities appear to be emerging in doing apps for cellphones, I start looking at ways that it can be a more robust tool for me, and maybe that means something more for others as well from this project (but maybe not).
James
The thing is, you wear all hats. Which means I end up in weird kind of arguments with myself. So the project administrator is worried about a stable baseline, ok have a new beta-5.0 branch, the developer in me wants to toss in all kinds of new features--um, are you sure?--and the project manager is trying to schedule times around my busy schedule for the actual codework. Plus any other jobs that just don't occur to me now while typing this post up quickly.
But at least I feel like I've resolved a lot of issues in my mind that have hampered my interest in development and I'll admit that one longterm possibility is coding for cellphones. And it also turns out that Class Viewer is my primary development tool, so when I think about doing more coding, and opportunities appear to be emerging in doing apps for cellphones, I start looking at ways that it can be a more robust tool for me, and maybe that means something more for others as well from this project (but maybe not).
James
Labels:
behind the scenes
Sunday, June 06, 2010
Back to basics, re-learn Java?
While I've done a little programming here and there--usually a little bit of code for some math research--it's been a while since I've done full-time computer development so I needed to buy a book and found that Head First Java has worked out.
Nicest thing though? It doesn't look to me like I forgot much! But I'll know for sure as I ponder making more changes to Class Viewer. So far so good though with the latest minor update release, but it remains to be seen how much I really still know as I contemplate bigger changes.
Nicest thing though? It doesn't look to me like I forgot much! But I'll know for sure as I ponder making more changes to Class Viewer. So far so good though with the latest minor update release, but it remains to be seen how much I really still know as I contemplate bigger changes.
Sunday, April 11, 2010
Method searches with Class Viewer
Part of the design philosophy of the Class Viewer project is getting the best method you need for a particular object or to return a particular object, where I also like to warn that one problem with that philosophy is that there is a drop in emphasis, oddly enough, in actually memorizing all the methods associated with a class.
Understanding how powerful Class Viewer is in searching for the perfect method is best done by seeing it in action, where my favorite example is to use the String class, which gives the main screenshot for the Class Viewer project, where you need to know what methods take chars or return them. Using Class Viewer now I can copy and paste to show them:
static String valueOf(char[])
static String valueOf(char[],int,int)
static String valueOf(char)
char charAt(int)
boolean contains(CharSequence)
boolean contentEquals(CharSequence)
static String copyValueOf(char[])
static String copyValueOf(char[],int,int)
byte[] getBytes(java.nio.charset.Charset)
void getChars(int,int,char[],int)
static String join(CharSequence,CharSequence[])
static String join(CharSequence,Iterable)
String replace(char,char)
String replace(CharSequence,CharSequence)
CharSequence subSequence(int,int)
char[] toCharArray()
And that's it. Everything that can possibly give or receive a char in the entire String class, so if you're developing and wonder if there is anything else, nope, not in the String class. That's it. And I did a search on "char", highlighting a method that had "char" from the left window of the app.
But hey, there is another class that can handle chars which is StringBuilder, and yes, you DO need to keep up with knowing classes, just not the methods in them, so it pushes you to only know your classes, as you can just pull out which method you need based on what you will hand them, and what you want them to give back to you.
That is key to the design philosophy: what thing do I have that needs to be given to a class and what do I need it to hand back to me?
Now if you open StringBuilder in Class Viewer you may notice--as I did while pondering what to say in this post--that it has a LOT of methods with "String" in them. But let's say I only want methods that receive just a String, here they are:
AbstractStringBuilder append(String)
StringBuilder append(String)
int indexOf(String)
int lastIndexOf(String)
And that's it. There are no other methods (of course I'm only talking public methods) which will take just a String, and how did I achieve the feat of finding them? I did a search on a method in the left window, highlighting "(String)". That's the easy way. To get just those methods using the "Search String" box in Class Viewer you actually have to search on: (java.lang.String)
You can get fancy searches by what you highlight and search on from the left window, like here's a fun one: "String "
It gives:
String toString()
String substring(int)
String substring(int,int)
And those are all the methods in the StringBuilder class that return a String. That one is kind of tricky as I actually highlighted whitespace, which you can only do with searches on the left hand window. But that can be a very powerful tool. So it's important to emphasize that whatever you highlight in the left window is what is searched, even special characters, like whitespace.
But notice if you were wondering how to get a String from StringBuilder those are the only ways.
Curious about any one of them? Then double-click on the method in the right hand window, and you get taken to javadocs. Here's the link that Class Viewer built for me for the third one:
http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html#substring-int-int-
Which is the final piece to helping you get the best method possible as if you have questions you can go directly to javadocs at the method, which I call deep linking.
So the focus is on what you want the class to give you. Or you can focus on what you wish to hand the class and that is where Class Viewer can help you a lot.
Results above valid with Java 8 SDK.
Editorial notes:
9/27/12 Updated built link to go to latest Java SDK. ___JSH
7/08/14 Updated copied searches and built link to go to latest Java SDK. ___JSH
Understanding how powerful Class Viewer is in searching for the perfect method is best done by seeing it in action, where my favorite example is to use the String class, which gives the main screenshot for the Class Viewer project, where you need to know what methods take chars or return them. Using Class Viewer now I can copy and paste to show them:
static String valueOf(char[])
static String valueOf(char[],int,int)
static String valueOf(char)
char charAt(int)
boolean contains(CharSequence)
boolean contentEquals(CharSequence)
static String copyValueOf(char[])
static String copyValueOf(char[],int,int)
byte[] getBytes(java.nio.charset.Charset)
void getChars(int,int,char[],int)
static String join(CharSequence,CharSequence[])
static String join(CharSequence,Iterable)
String replace(char,char)
String replace(CharSequence,CharSequence)
CharSequence subSequence(int,int)
char[] toCharArray()
And that's it. Everything that can possibly give or receive a char in the entire String class, so if you're developing and wonder if there is anything else, nope, not in the String class. That's it. And I did a search on "char", highlighting a method that had "char" from the left window of the app.
But hey, there is another class that can handle chars which is StringBuilder, and yes, you DO need to keep up with knowing classes, just not the methods in them, so it pushes you to only know your classes, as you can just pull out which method you need based on what you will hand them, and what you want them to give back to you.
That is key to the design philosophy: what thing do I have that needs to be given to a class and what do I need it to hand back to me?
Now if you open StringBuilder in Class Viewer you may notice--as I did while pondering what to say in this post--that it has a LOT of methods with "String" in them. But let's say I only want methods that receive just a String, here they are:
AbstractStringBuilder append(String)
StringBuilder append(String)
int indexOf(String)
int lastIndexOf(String)
And that's it. There are no other methods (of course I'm only talking public methods) which will take just a String, and how did I achieve the feat of finding them? I did a search on a method in the left window, highlighting "(String)". That's the easy way. To get just those methods using the "Search String" box in Class Viewer you actually have to search on: (java.lang.String)
You can get fancy searches by what you highlight and search on from the left window, like here's a fun one: "String "
It gives:
String toString()
String substring(int)
String substring(int,int)
And those are all the methods in the StringBuilder class that return a String. That one is kind of tricky as I actually highlighted whitespace, which you can only do with searches on the left hand window. But that can be a very powerful tool. So it's important to emphasize that whatever you highlight in the left window is what is searched, even special characters, like whitespace.
But notice if you were wondering how to get a String from StringBuilder those are the only ways.
Curious about any one of them? Then double-click on the method in the right hand window, and you get taken to javadocs. Here's the link that Class Viewer built for me for the third one:
http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html#substring-int-int-
Which is the final piece to helping you get the best method possible as if you have questions you can go directly to javadocs at the method, which I call deep linking.
So the focus is on what you want the class to give you. Or you can focus on what you wish to hand the class and that is where Class Viewer can help you a lot.
Results above valid with Java 8 SDK.
Editorial notes:
9/27/12 Updated built link to go to latest Java SDK. ___JSH
7/08/14 Updated copied searches and built link to go to latest Java SDK. ___JSH
Labels:
project
Friday, November 27, 2009
Class Viewer as an applet
Oh yeah, you can run Class Viewer as an applet. For a while I did have it up at my SourceForge site as an applet but I wasn't sure that was ok, and didn't want it to turn into some kind of reference site.
But anyone can just throw it on a webpage, maybe with their own code's javadocs bundled up in the jar file so that they can access their class information from the web.
Class Viewer is a hybrid app--it runs on the desktop or on the web, with less functionality from the web.
I think hybrid apps are the future of app development.
But anyone can just throw it on a webpage, maybe with their own code's javadocs bundled up in the jar file so that they can access their class information from the web.
Class Viewer is a hybrid app--it runs on the desktop or on the web, with less functionality from the web.
I think hybrid apps are the future of app development.
Subscribe to:
Posts (Atom)