Learn Along The Way

Over the past month and a half, I’ve been working on a new project, one which is a composition of several smaller projects. One thing I’ve noticed is that I’ve learned more in that month and a half, than I have in quite a while, out of a necessity to fulfill my wants. Some of the things I’ve learned, or are learning, I had previously avoided do to my distaste for having to deal with them; now that I understand them, I actually try to help others get on board. OAuth is a good example, I’ve been avoiding this for over two years, just because I thought it was a messy annoyance, but now that I’ve implemented it in several libraries, I actually don’t mind.

The true inspiration for this post though, was actually a compounding of thoughts from various things I’ve read recently, and thinking upon things I’ve read in the past. The recent thing that really kicked it off was a presentation by the people at Skillshare, embedded below. While looking through it, I had an epiphany, “Learning shouldn’t be the goal, it should just happen naturally on your way to some practical goal, with real results.” Maybe it was because I’ve been steeped in such things and that I have a distaste for the ‘general’ waste that is higher education, but the thought really struck a chord.

“Today the pinnacle of education is getting into college.” – Skillshare Presentation, Slide 8

That is really my issue with higher education. Once you get in, there are many ways to subvert the system, so what good is it. The only real boundary presented is making that initial pass through the gates. Once there, it’s more business as usual, where you can skim your way through the majority of it, most of it is a waste of time. I find practical learning to be much more enthralling, and it can be done on a just in time basis.

Why waste 4 years learning what will be mostly stale by the time you leave; if you can learn it as you go, while it’s still fresh? Because, everyone says that college is the key to being successful. Sounds a whole lot like the story of the fisherman and the businessman, to me.  If you’re already doing something, you’ll gradually learn how to do it better, but they ask you to pause what you’re doing for a few years, and do it and other things so that you can be better.

So be practical, focus on what you want, and when you have trouble, focus on understanding the issues you’re having. Understanding is way better than rote memorization. Understanding allows you to expand on the concept, in ways that rote memorization wouldn’t allow. If you have too much trouble find a mentor, and prove that you’re willing to try. In the end, all that should really matter, is if you can actually do what you say you can do. That’s it. So learn along the way, that way you have not just your education, but lots of other things to show for it.

The Future Of Search Can Be Found In Dungeon

Earlier today, I made a comment asking, “Could it be that Zork* is the search of future,” then deleted it. Louis Gray ended up calling me out on the deletion, which was for no real purpose other than not wanting to fully explain myself. I might as well lay out my thoughts on what I meant, lest I forget it.

A problem with search currently, is that we’re being trained to speak to the engine, with a penalty to using regular phrases as your query strings. Various terms are stripped from the query strings, and you end up with items that aren’t relevant or hardly related, when you just haphazardly place your key terms in.  This is an issue that I find frustrating; I often end up banging around for hours on end trying to get proper query terms to bring me the results I’m looking for. Search is simply hit or miss, even for the new guys, such as Blekko and DuckDuckGo, trying to beat the incumbent which is Google. The new guys have better quality, but it does come at a cost of having special syntax, Blekko with the slash modifiers and DuckDuckGo with the bang modifiers.

Why don’t we have a search system that uses a more intricate text parser, to parse the queries. It’s obvious that we have the technology, just look at how amazing the parser for Zork and other text-based adventure games were. Why can’t we use grammar that we are used to, and let the software parse the elements out, where necessary? Simply put, I’ll trade off the ability for instantaneous results if you provide a simple text parser that makes it easier for me to input my queries in a more natural form.

Let me put in something like one of these:

  • “Louis Gray’s latest post about Friendfeed.”
  • “Most recent blog post from Louis Gray about Friendfeed.”
  • “Latest blog post on louisgray.com containing Friendfeed.”

All of those should return similar results, but they all share a common set of elements, that humans often have to convert into their queries if they want to get a valuable response. A decent Google query for this would look like, {site:”louisgray.com” Friendfeed}, but this requires that you also select an option outside of the query box, to narrow it to most recent. All of those queries I would like to use return very noisey results, even the modified query is noisy, and is more closely related to “containing” than about.

My question is why don’t we have a text parser, probably client-side, that helps us out in getting the content we want? If you look at my preferred queries they break down in to relative elements.

  • A source. Signified by ”s,’ ‘from,’ and ‘on’ in the relative examples. They all signify that your looking for something from Louis Gray, in some form.
  • A temporal modifier. Signified by “‘latest’ and ‘most recent,’ in the examples. Signifies that the period is a significant element of your query.
  • A  source modifier. Signified by the ‘post’ and ‘blog post, in the examples; easily could be Tweet, Status, Image, to search for.
  • A search method. Signified by ‘about,’ ‘containing,’ or ‘with.’ These signify how the elements that follow should be interpreted.
  • A set of query elements. In my example I only used Friendfeed, but it is what follows the search method signifier.
  • A system of set logic. Using ‘and,’ ‘or,’ or ‘commas,’ as a way to modify the way the sources and queries are handled.

Why aren’t we using this now? Sure, some of what I suggest is harder to manage, because it requires the ability to know who Louis Gray is, and what sources he has, but this only requires having a somewhat decent image of his set of profiles. Google happens to have just that, as do many other aggregating services, but Google has the power here, being a search provider. I don’t know if it will enhance the results we receiver from such services, but wouldn’t it be wonderful to talk to the system in a way that is at least halfway normal, and get decent results even without a solidly designed query.

Search providers please give us a half decent text parser, even if it’s only as advanced as that of the 70’s. Hell, it’s already common enough to see simply text parsers that pull hashtags, and @user strings, and converts them to links. Why not something that takes a more English approach to the query, and does the conversion for us to get the perfect query strings, that the system wants?

“What a (ahem!) strange idea!”

Notes:

*= Zork’s original title after completion was Dungeon, but a trademark violation saw that it was changed back.

The Simple Styleguide I Follow

I was asked to provide an overview of a project that I was working on and I ended up providing a style guide in the overview documents and thought it was worth sharing. It’s in no way all encompassing, but it provides a good core for self documenting code, in my opinion.

Simple Styleguide
Naming Conventions
-   Files
   -   Always lowercase
   -   Words seperated by an underscore
   -   Controllers
       -   Named after the functional  area they are meant to add
   -   Models
       -   Named after the table they access in the database
       -   Tagged with a _model to denote the file as a model
   -   Views
       -   Named after the controller which requires that views
       -   At most 1 primary view per controller
       -   You can provide a sectioned views using the sections folder
       -   Sections should be stored in a folder named after the primary view
           -   e.g. /views/sections/{primary view name}/logged_in.*
       -   Tagged with a _view to denote the file as a view

-   Classes are capitalized version of file name

-   Function/Method
    -   Words seperated by an underscore
    -   Generally use a verb at the beginning to describe functionality

-   Variables
    -   Normally named after the field they access
    -   Create model objects as m_{model name}

Spacing
-   Indenting
    -   Uses spaces instead of tabs, 2 or 4 spaces
    -   Classes
        -   Brackets start on next line at the same level as the class
        -   Brackets end on the same level as the class
    -   Functions
        -   Brackets start on the next line at the same level as the function
        -   Brackets end on the same level as the class
        -   Add a new line to split functions up for readability purposes
    -   Control Blocks
        -   Brackets start on same line as the beginning of the block
        -   Provide one space between the end of the logic and the bracket
        -   Brackets end on the same level the control block

Extra Bits
-   Functions that have a similar focus should be close to each other

On Suicide and Negativity

This was published by accident, and as such is lacking in the actual content I wanted to add, so I’ve added an addendum. I’ve also thought of taking it down, but some people responded positively to it, so I’ll keep it up with only minor editing.

I have been thinking quite a bit about suicide lately. Just thinking about it, it’s not something I could follow through on, anymore. Life is absolutely worth living. It has caused me to make changes and continued thinking about what I’m doing and what I should do. It is also a leading edge in my personal views.

For some background, I’ve made 3 serious attempts over the last decade, though the last was over 4 years ago.

My first was when I was 11, at school; one day the teacher walked out of the class room and I climbed into the second story window, and leaned back to roll out onto the sidewalk. Luckily, two other students grabbed my arms just as I had leaned back, pulled me back in, and convinced me it was stupid. During this period, I also used to drag my head on the ground while swinging trying to use the force to snap my neck.

The other two attempts occurred when I was about 15 or 16, once with a gun, and another jump attempt. I took my stepfather’s .22, off of his workbench in the garage, out into the woods, and sat there thinking about what I would miss for a few minutes. I then placed it up to my temple and pulled the trigger. Nothing happened. My stepfather, keeps the magazine empty and the chamber clear, when it’s not on his person. I walked back to the house, placed the gun back on the bench, and went into my room and cried myself to sleep.

The other time, I walked out to cliffs near my house, and down to a little bench, that we used to look at the river from, because it was clearer there. I got ready to jump, but again decided to think about what I would miss, and sat down and thought about my girlfriend at the time, who was also suffering suicidal tendencies, and how much that might affect her. She had lost an ex, on her birthday a few months earlier, when he hung himself. I decided to walk away from this one, but almost accidentally succumb due to the slope getting back off of the shelf, and the leaves slipping from under my feet. This was, and will be, the last attempt I ever made.

I realized at that point, that my actions are selfish. I don’t just take my life, but I could ruin so many others. I also realized at that point, that death isn’t to be feared or fought against. To deny death, is to deny life. Life is to be enjoyed and filled with happiness.

My job of filling my life with happiness is often harder when I add socialization to the mix. I don’t like when people fearmonger, it’s one of biggest gripes, because it creates a negative mindset. I also try to avoid those with negative mindsets, because it doesn’t help anyone. Being positive, but even more so realistic, is the best that can be accomplished. Lately I’ve seen so much negative thinking, it’s bringing me down, and making it hard to keep the thoughts down.  Also people who say I can’t, make me sad, because I am filled with hope for individuals, and it shows that they aren’t filled with hope themselves.

*Addendum*

I am an optimist through and through, but I’m also a pessimist at heart; this makes it easier to tear things apart and find a solution. I see potential in everyone, this is why, “I can’t,” annoys me so deeply, and even I am prone to excuses, but I loathe them, and try to find ways to subvert them in myself and others. I only turn my back on people, when they take advantage of me or others, to my knowledge. I also realize that life is filled with negatives, and these can make it seem like you can’t, but there is often a way to spin the negativity with optimism or ignore it, if there is no real ramifications to that ignorance.

“Just be…” The only time you have is now. Be happy. Be inviting. Be courteous. Be free. Be you.

*Addendum fin*

I just don’t have time for negative space, and negative thoughts and arguments. So I’m done with it.

25 Ideas To Live 25 Hours A Day

1. Sleep is unproductive and a waste of time.

Every hour you spend sleeping is one fewer hour you get to truly spend living. One hour a day is more than 2 weeks of extra time, every year. Obviously, taking it too far isn’t healthy, but a 4-6 hour night adds 1-2 months to your conscious living every year.

“Sleep is unproductive and a waste of time.” ~ Louis Gray

2. Be Childish.

Never take yourself too seriously, life is too short. Enjoy every moment, and don’t block your own path. Spend your time with making memories and friends.

“If it seems a childish thing to do, do it in remembrance that you are a child.” ~ Frederick Buechner

3. Acknowledge the inevitability of death.

Sooner or later we will all die, fighting for survival is ultimately a losing battle. Stop fretting, and focus on every moment you have in the present.

“This is your life, and it’s ending one second at a time.” ~ Fight Club

4. Money is less valuable than time.

There is no way to gain more time in life, and the clock never ceases. Stop trading your time for more money than you need, if your time is more valuable.

“Time is money says the proverb, but turn it around and you get a precious truth. Money is time.” ~ George Gissing

5. Ignore the little things.

Do only the 20% most import things or those that you feel will have the biggest return. The time and energy you save, can be spent on the things you really want to do.

“20 percent of focused effort results in 80 percent out come of results!” ~ Vilfredo Pareto

6. Never be afraid to challenge the ideas.

There is no reason to let anything stop you, particularly yourself. Rules are roadblocks with 3 options: follow the rules, break the rules, find a way another way around the rule. Choose your own path in life, and never stop learning something new.

“The Way of Mastery is to break all the rules—but you have to know them perfectly before you can do this; otherwise you are not in a position to transcend them.” ~ Aleister Crowley

I Can’t Say I Can’t, But I Could If…

With the beginning of a new year, I plan on taking several realizations and things I discovered momentarily, last year, and try to make them permanent. The first is to stop saying, “I/it can’t…,” with the exception of when used in conjunction with, “… but I could if.” The second is, “third-person introspective.”

Some time in September or October, I had an epiphany of how harmful, “I can’t,” is; it allows for excuses to be provided so easily. It allows you to just shuck your responsibility, without fully thinking through the problem, or trying to find another way around the problem. My solution is to only allow myself to say the phrase, “I/It can’t X, but I/it could if x.” It is a simple method, that can be used recursively, to find the starting point, if you can’t do x, then substitute it for X and start again. Ultimately, I feel that it is a great way of breaking a problem down, and avoiding excuses.

Third-person introspective, now this idea is a little less approachable, but personally more fun. I allow myself to escape, and critique myself on all of the actions I make as though I had someone following me around, looking over my shoulder. I tried this for about a week, and while it’s odd at first, it has some pretty interesting results,  you self-inhibit as though you weren’t alone, even if you are. The one issue that I had with it is that you have to be able to maintain two-levels of consciousness simultaneously, which can be difficult, particularly when you’re tired. I assume once one becomes adjusted to it, the second consciousness could become controlled subconsciously.

I’m hoping that implementing both of these, along with my recent purging of  stuff that was weighing on my mind will help me be more active, and engaged in the now. I still have a couple more things to get out of there, but for the most part, I’ve put everything I want behind me, and I’m starting to truly move forward for the first time in two or three years. Hope your year is going to be as wonderful as mine.

Ordered Networking: 4munity/hIphS

As I feel like it’s good to recognize your failures and look at what went wrong, here is the first of several posts on some of my failures. I’m posting these for two reasons, storing my failures and lessons, but also my ideas, however loosely bound they may be.

Date: December 2007 – September 15th, 2008

Core Ideas:

Limited number of relationships based on Dunbar’s Number(150); Segregation of various groups (e.g. Work, Family, etc.); Focus on forums for communication; Making an environment, extremely unfriendly to spammers.

From the notes:

Privatized Comments – Scalable conversations 1:1 – 1:100 conversation, allowance of publication by Owner [commenter]; Features: OpenID Profiles – Tweet Threads – Forums – API Integration – Collab Napkin Interface; Ordered Network – 150 Friends Max, (later laxed to 200) 149×150(22350) 2nd Order, 149x149x150(3.3million) 3rd Order;  Access: Friends – View Profile, comment, message; 2nd – View profile w/o comments, message; 3rd message; AJAX Threading – Personal Styles (Pre-Designed Offerings); Mobile entry coding: (P[post]/R[read]) GGTT [Group/ Thread Depth] For new thread posting location; AL Appends Last Message (within 15 minutes.)

Background:

I got really sick of Facebook, had already deleted 2 accounts, and barely using a 3rd, Myspace, and forums because of security and overall interaction present on those platforms. The information I saw was spammy or non-relavent to me. I was more interested in finding a way to maximize value of relationships, and communications.

It started off as just an interesting piece of forum software, and then evolved into using relationships to promote and control the relevance of the data, and collaboration. Unfortunately, I was utterly clueless about what I was doing, and went about using Java to build the interface, and text files for storing relationship data; I had no clue about true databases at this point. The whole database was a set of folders and text files, what could go wrong. Yep, not much else got done, except for a barely working version of the napkin, and it definetly wasn’t as functional as I would have liked.

Ultimately, I fell in love with Twitter, and decided to walk away from the project. Not before posting, a blog post detailing the basics fo the service, which I’ll post at the bottom. Overall, I was so disturbed I tossed most of the code out immediately, and have sense thrown most of the other pieces from here and there out as well, even the original logo, which I would have liked to added to this post.

Lessons:

Layout a solid plan, and pick your tools wisely.

Don’t try to do everything, too much, means it takes forever to get things done.

If you need help, ask for advice from people you trust.

If you lose interest before you’ve even completed the project stop throwing more time into it.

Sep 05, 2008

What is hIphS?

A lot of people that have found this place are probably wondering what is hIphs. So I’ll give you some back story on what it is and why it needs to be. hIphs is something that I am currently developing to remove the problems I have found with the Social networking area. It is here to confront spamming, promote relationships, and help people collaborate on projects. It is a support group, a conference for you team, it is a place to connect with your family, above all it is here for you to use. I see it as a social experiment at this stage as of some of the boundaries I have set to force all of the goals, layered networks, personal forums, and above all a 200 person limit for friends, family, and partners.

I feel that If you can force the limit constraint that it will promote relationships and (it has just begun to be implemented in lighter extent on digg and twitter) to reduce spam. I am also working on a napkin interface for collaborative work that would allow you to upload files to share during a conversation, along with and IM client and a whiteboard, all to open the web to truly interactive collaborative projects. It is also to my interest to at some point in the future to allow saving of this collaborative event and allow you to provide it to clients or share it in house. The one other aspect that I’m working on is to provide a threaded forum based twitter like threading that you only receive the threads of your friends and you can keep the thread going with someone who is mutually related to your friend, so long as your friend is the one who began the thread.

Why the name hIphs and why the odd capitalization?

This is actually one of the last names I came up with for the site as my favorites were already taken. The name is based on several levels: First, is the likeness of a closed social network to that of a bee hive, you and your friends are more productive when your dealing on a trust based system. Second, is what you get when you split the word apart “Hi Phs” which I came to symbolize as Hello Friends. Third, I feel that the site will be providing multiple ‘I’nternet ‘S’ervices in the future, thus, the emphasis on those to letters. That’s my description on what hIphS is and why I chose the names. Thank you for reading this if you somehow found it, at this