Finally.
I sat down and just worked, no other distractions, just work. Took me 20 minutes. I really need to work on getting to work more.
In addition to that, I removed the current flab on the site. I’m not going to have placeholders any more, that’s simply stupid. I can have placeholders on a development version, but not the one that gets shown to the public, that is just poor programming practice.
Changes:
Updates to be done:
‘Build a database structure’ means I need to figure out a way to store all this data that people are looking up. It doesn’t make sense to make repeated calls for the same domain if people check it a couple times a day. I want ot make it so upon the first call of a domain that is not in the system, it sees there is no record, then builds one. If there is a record, it’ll check the timestamp, and if it’s within a certain timeframe, then it will display that information (so I don’t have to make extra, pointless calls to Compete or Google or Alexa).
In addition to making the script more streamlined, this will help me build it up in the future. I will be keeping all the logs I gather, so that in a few months people can check and see graphs of how their rankings have changed over time. How cool would it be to see a graph of your growth that includes all the metrics you want, not just Alexa, not just PR, not just Compete, but all of them (plus more). You’ll be able to visually see how, for example, PR affected your broad growth.
Big plans are starting to look smaller now that I have a better idea of what I’m doing. Look forward to more great stuff on Metrics.
I’ve been busy getting work done on some projects of mine, as well as learning how to write code more efficiently. When I write down ideas, I’m not drawing them out logically, so I can translate it easily in to actual code. Where I once saw broad connections, I now can conceptually see how they would link together, and in that I am starting to find out that programming isn’t about making software of scripts do something, but rather simply connecting them in the correct ways.
Part of my big leap forward in understanding concepts of programming was my introduction to the MVC style as a result of learning up on CakePHP.
MVC — Model, View, Controller — is the idea that you should seperate your code based on what it’s purpose is. Model stands for data, information that you keep, and the functions that are related specifically to just the data. View is the code that handles how the data (Model) is displayed in the end. Controller is the actual computations of the program, the information that — given input — manipulates data and sends it to the View.
CakePHP is a platform that use the MVC style and basically gives you a leg up in programming something because it includes code that is essential in most robust applications, essentially a PHP ‘template’. It makes creating actual functions a breeze, and then (which is the big part) it makes the connection between those 3 components (MVC) simple, so you can make something that is both functional, and exponentially easier to upgrade and extend.
A lot of this has stemmed from my continued development on Metrics. Metrics is somewhat operational right now, it simply lacks a good deal of the information I intended it to have. This has been caused by some hurtles I have to get over programatically, which has led me to a bit of a crossroads of doing what needs to be done quick and dirty, or taking the time ot make it more powerful and easier to code for in the future. I’ve been leaning towards the latter, so development is slower than I had intended, but the end result is something much more powerful than I had intended as well.
Metrics has taken a much longer time than I had originally thought it would. Why? For the same reasons I was having before: I get too many ideas and suddenly I can never have enough done. I have to make things perfect for the release, and then it never gets released. This is wrong.
I’ve started ro realize that things don’t need to be perfect just yet. I’ve been writing down all the changes I want to see to Metrics and I’m going to now make it a goal not to sit down and work on all of them, but to sit down and finish one at a time. This way I will have a functioning site that is always updated and improved upon, I learn better practices for making useable, moddable code, and I get work done.
My problem is that I see this whole development process as also a self-development, and because of that I think I have to have everything perfect because that is what I envision I would do in an ideal situation. This is counterproductive. I need to sit down and work on one small thing at a time, and then over time it will develop in to what I want it to.
I have sort of released Metrics (I haven’t begun my marketing campaign yet, but that will be soon). My goal for tonight is to rewrite the index/front page so that people know what metrics is when they come to the website. After that I think my goal is to get Compete stats working (which is tough, because while they have a developer center, it’s all documented in PHP5, whereas I am running 4). Other goals are to move my server (I am sick of theplanet, absolutley atrocious service and I never, ever recommend them) and to finish selling 325mb.
Personally, I have non-internet goals as well. I am making it a point to do pushups, situps, and to stretch every morning, and as often as possible to ride my bike up some hill every morning. I slacked this weekend, but that is excusable as it was Halloween weekend.
So, overall my goal is to try to take smaller bites in life. Start small and it’ll end up big.
For the past week or so I’ve been thinking a lot about what I want to get accomplished and by extension, who I have to be to get that accomplished. I’m starting to realize that I have to learn how to be a productive person in every aspect of my life if I want to be productive with my web developments. This includes things like exercise and restraint, keeping my apartment clean, following through with appointments and things I need to take care of. I have learned that I need to give up my old reclusive glued-to-the-computer self who sits at the computer just because I’m bored.
When I sit down at this desk, I need to have a purpose, a meaning for being on. I waste so much time not doing anything at all whilst operating under the guise of “Oh, I have some code open so it’s sort of like I’m working”. If I am to become who I want to become, and achieve what I want to achieve I have to know that I alone give myself purpose to move forward and that the choice is solely in my hands, no other factors are involved. I can’t blame anything for my lack of commitment other than myself.
And so the choice is now clear: I need to grow up. I need to no longer be a kid, I need to no longer treat my self as someone who is not in the ‘real world’ yet. Web development is my job, so I damn well better do it. This doesn’t mean stop doing things I enjoy, on the contrary it means that I will be achieving my goals and aspirations all while living life how I want to live it. I want to be known for this fact.
So here’s to the beginning of my real world life.
My lack of updates recently have been due to some serious hurdles I’ve had to overcome with Metrics. It is almost done, I promise. Within a few days at most I will finally be releasing it.
The work I have been doing has been a lot of learning new languages and trying to code very specific needs that don’e really have too much documentation available. I’ve been having to scour through forums, pester friends, and read a couple books. It’s helped a lot that a web development class I’m taking is focusing on Javascript and utilizing new frameworks such as jQuery and Prototype.
I’ve mapped out the next stages of Metrics development, things I will begin working on as soon after I get the site up and operational. No use making people wait just to have it be the way I envision it.
I’ve been reading up a lot on Javascript, and I’ve been starting to understand how it works, and how I can practically use it to solve these problems that I can’t find specific answers to. Most notably is how my form functions and getting the site to recognize different ways people will try to access information. My intentions have been to make it so you can input almost iteration of URL or Domain name (which is what Metrics gathers information on) and have the site function properly. The collection codes I am using (that is to say the code I’ve made or used that grabs each individual metric or statistic about a given URL) are very finicky when it comes to how they’re used. I have to feed the the right format of data. So in that, if a user inputs one type of URL, that direct input they give my script might work with one set of codes, but not with the other.

To counter this, I had to write a cleaning function to account for any input the user could put in, and then route it through the gathering codes.

But that was just the tip of the iceberg in terms of problems I’ve been running in to. I’ve had to account for how I wanted the URL system to work (so people can just type in ‘metrics.cc/mikemanfrin.com’ to see information on mikemanfrin.com), and then because of that had to figure out a workaround for the form (which only submits it with ?url= appended on the end of the destination) submission. And a whole slew of problems. I’ve now found out there has to be a bit of recoding to the design because I broke it (found a flaw) trying to get a Whois script to work.
But I am nearing completion. I’ve gotten past the very big problems and all that remains are small, workable problems with readily available solutions. And in all this I’ve gained a tremendous amount of new knowledge in the programming area, which has been a goal of mine with the creation of this site. Metrics is leading me to much, much bigger projects and my friends can tell you how excited I am about the future of Metrics, myself, and Lutento Web Development as a whole.
Expect big things.
It makes me full of shame to know that there’s a very good percentage of this country that is still tremendously bigoted and vehement in the validity of their false ideas. This campaign has been extremely interesting to watch for this reason. It seems with the popularity of online sharing sites such as Youtube, more and more of the absolute scum of our society makes its way in to the sunlight.
Grow up, people. If you’re going to call someone a communist muslim, and shout out ‘Kill Him’ at rallies in reference to one of the two major presidential candidates, then you have absolutley no right to have any say in the political process. This isn’t at all an issue of free speech as some might try to argue, it’s an issue with blindly dumb and jingoistic people thinking that their awful, hateful ideas are valid and acceptable.
I have no problem with people supporting McCain, please don’t interpret this post to mean that; my comments are directed at a certain caliber of individual that still holds on to the idea that Obama is a Muslim, or a Terrorist, or wants to paint the White House black. These people are dangerous and should not be given any consideration. They cannot be reasoned with because they lack the ability to reason. Common sense is lost on them. They remain so ignorantly cemented in their views that any attempts to try to show them the fallacy in things they say is met with vitrol and a “F— you, I got mine” attitude. These are the kinds of people I am talking about:
And people like this:
Never in my wildest dreams did I ever think people were this ignorant and stupid.
Well done, America. You never cease to amaze me.
I was out riding my bike and the winds were of a force I’d never encountered out in the open. It was a warm night, but the breeze swept around me, taking away my heat. My body operating in the most efficient of temperatures. A hill rose in the distance before me, obsured in the end by the darkness. This was the moment the wind suddenly stopped being my friend. It now pushed against, where it had once pushed me on.
I’m sitting now on my deck thinking about the ride I just took in the earliest of this morning. I would beg my mother not to fret, knowing I was safe and aware. The streets were near empty, save for a couple of people walking past in spatterings, and the occcasional slow-moving car. There was one car I even kept pace with.
The car — a taxi — was on that hill. Passing me, it’s lights cast a glow well before it came upon me. We had just previously passed a police car, and I noticed the glow was advancing slower than it had been. It crept up further closer to me. My legs had begun to burn a bit, and I was thinking to myself not to think of how they felt, but to imagine what someone like Lance Armstrong must think when he’s riding up moutain — about everything in the world. Except your legs.
I tried that, which is futile since you’re thinking about not thinking about something, which is circular and just makes you focus on it more.
In the meantime, I had been riding to keep a pace with the car taxi. A glance over at the taxi and a thought of ‘Oh man, I’m going to have to speed up’ only served as a bittersweet distraction to my troubles of thought.
‘What about the book I’m reading, I’ll try thinking about that.’ I reasoned. ‘Okay, lets think about that. Well, it’s about Alexander the Great. Oh, I’m at a part where he’s fighting a much larger army than his (Persia, under Darius). It’s about how he defeated the Persian army that held the defensive high ground and outnumbered Alexander’s forces 2.5 to one.’
So here’s where I finally stopped thinking about how much my legs hurt. Kind of indirectly, too, since I didn’t actually stop thinking about them. I thought of how it must have been to be a soldier in a battle like that. You’re met with these absurd odds (fighting an army that outnumbers you almost 3 to 1) and all you could do was know that everything had to be given. No other thoughts must be permitted when you’re met with something that you cannot conceivably overcome. Your sole goal is to overtake this obstacle that you couldn’t ever think possible, and to know that it is not possible. Because if you know that everything must be given up in the end, you do not hesitate to make full use of your faculties — down to the very last drop of sweat or pant of air.
So all you can think is that if you do fail, you know full well that it could not have been any other way. You gave it the absolute fullest effort that one could possibly give.
And so I pedaled. The slight discomfort in my quads was now growing in to a festering nag. My feet circling around until at last I could see the end approaching. I realized that I was now allowed to permit myself to entertain the possibility of achievement, and my legs started to slow with the plateauing of the road. At last I reached the apex.
This is exactly as Alexander’s soldiers did, they forgot their thoughts of ever surviving and allowed themselves to enter in to a state of full effort so they could know, when they died, that there was no other way. But because of this they surived. They defeated Persia at The Battle of Issus. And so too I defeated the hill.
I write this to illustate that I intend to give my absolute most in achieving a career out of web development. I want you to understand I will earn my ethos in this arena.
A lot has changed since my last post. Mainly though it was selling a website. Then finding a couple good friends had blogs, getting comments on this blog and hitting 11 RSS subscribers (which was a milestone goal for me), getting work done on Metrics, and some good things happening in my life too.
I’ve been wanting to sell this for a while. On two different occasions I had a buyer, and then they backed out. So when I was contacted by a man who wanted to jump in to the web development game (had been working as an affiliate marketer) to try new CPA marketing ideas of his, and found out that he was indeed real and not trying to scam me, I knew I had found a buyer.
This is trememdously great for both of us. I sold it at a price that I really wanted (and was more than the previous two offers) which is enough to put me back to above-zero in the last 6 months in terms of developments (read: earners app dying) and allow me to focus on my new projects. The site has a lot of members, great organic growth, and is generally a site worth keeping. However, I have not been very good at monetizing it. The buyer is an affiliate marketer who is looking to try marketing on websites. I.e. he wants to experiment with CPA offers on websites, which is exactly what this site needs. It needs someone to try new ways of monetization. I get money I need, and he gets a great site that has potential to be a big winner for him. All at a very fair price that is agreeable to both of us.
So, cheers to the buyer, I hope to be reading about how great 325mb is doing under your care 6 months down the road.
People are reading! I hit a milestone of 11 RSS Subscribers (10 readers other than myself). Hopefully this means people will start to add it, seeing others have decided I am worth reading. Not only that, but people are commenting, and in ways that helps me! I got a comment telling me about a PHP function called parse_url (which will help me in my Metrics.cc coding). Turns out he is a web developer himself. Thanks Mabashar!
I sat down and thought out the problem and ways to achieve my objective. This code is meant to make it so people can type in any type of URL in to Metrics and have it clean up the entry so the rest of my software can parse things.
So if you were to type in:
Or anything else with http:// and www. and direcotries under the url (”/about” in the above example), all of those would return the same thing: mikemanfrin.com. The code needs to take any input and clean it up.
Before I had some quick code a former programmer I used to hire for jobs helped me out with. Problem was that it was only sort of working. I realized I need to code things on my own, so I started from scratch. After 10 minues of coding I had it done. It was 30+ lines and it was bugged. A friend of mine, Scott, helped me debug, and in the process we worked out much more concise, and efficient code. We reduced it to just 5 lines:
$domain = str_replace("http://", "", $domain);
$domain = str_replace("https://", "", $domain);
$domain = str_replace("www.", "", $domain);
$parts = explode("/", $domain);
$domain = $parts[0];
And it works! (See it working here, try changing the domain in the address bar). I didn’t end up using parse_url as Mubashar suggested (I tried it, but was running in to a problem I couldn’t figure out).
I’ve found some things in my trunk that I thought were long gone. An expensive bike bag for my new bike (which was in my apartment when my bike was stolen last year, thankfully), a light for my bike, and a whole bunch of books (such as my PHP book, how timely!). Also, I found out some of my friends now have blogs. Entourage this week was great (and part of the motivation to get a lot of work done). This all coupled with my big sale has made life a lot better. So thank you for reading if you’ve read this whole thing, and please don’t be hesitant to comment on the blog, getting feedback from this makes my day so, so much better.
So I’ve talked a lot about how simple it would be to get Metrics.cc up and running and functional. Well, that was mostly talk. Metrics is proving tremendously more difficult than I had originally planned. As it turns out, grabbing the Alexa rank of a site is much more complex than I had originally planned. So is stripping user input in to my desired format (i.e. taking http://mikemanfrin.com and making it ‘mikemanfrin.com’, without the http://). So, metrics might take a few more days than anticipated.
But rather than see this as a reason to slack on my work, I see this as an opportunity to learn more than I had planned. I now need to have more expertise with php than I had thought I would need. For example, here is my current code for stripping the url down to its basic form:
$exp = explode("http://", $_GET['url']);
$domain = count($exp) > 0 ? $exp[0] : $exp[1];
if (count(explode(”/”, $domain)) > 0) {
$exp = explode(”/”, $domain);
$domain = $exp[0];
}
$domain = str_replace(”www.”, “”, $domain);
This only works if I have the http:// in the url. It fails if I do not. I can switch exp[0] and exp[1] and I would get the reverse. I need both. So instead of giving up and spending money to hire someone else, I will spend this weekend on reading up on PHP, and sit down, code out how to solve this problem in english (i.e. not program it), then translate it in to PHP.
This illustates one of my current goals, and a goal that I think all my readers should follow:
When you come across an unexpected problem, do not view it as an obstacle, but view it as a way to prove yourself worthy of the task in front of you.
In viewing potentially game-wrecking problems as opportunities for growth, you prove that you are worthy of achieving your original goal (be it making money, or anything else, such as losing weight or quitting smoking). Choose to see problems as good things. Choose to see the negative as a positive, and I guarantee you will find success.
I’m going to end this post, as I feel I’m starting to get to philosophical. Regardless, I believe you must find the good in every bad situation if you are to be a person who can turn even to worst economic times in to the greatest of opportunities. Good night and good luck.