Archive for July 2006
Critique of not.upbylunch’s design!
[tags]design, site[/tags]
I’m reading a lot about design lately so I am critiquing everything! I have decided the first place to really my critiques is this blog. So here are some things that annoy me about this design.
- The colors are depressing and lack enthusasm. It really doesn’t make the site more readable, but gives the reader a lack of energy after reading it. I think it scares away more people because of the emo coloring then it actually brings in so a lack of professionalism!
- The title is hidden away to the right. I want people to know the title because it’s one of my best titles!
So it should be better seen! - The search really sucks! I’m going to replace it with a Google Search at the bottom soon.
- Pictures don’t go well with this template. I can’t get the text and pictures to look good together! It is why I haven’t placed more pictures.
So complains, complains, complains….what do I want? Well I only want a few things, but they should be done well.
- Feeds should be easily accessible!
- Lots of white so I can put pictures and such and also make the site more readable.
- Same thing I am doing now with my tags to be able to expand them out. So possibly a three pane view.
- Search easily accessible and relevant!
There you have it I only want a few things, but those few things make the site much easier to read especially without the lack of harsh colors! I don’t care about flashy or new Web 2.0 like stuff. I just want a nice soothing site which the current one does not provide!
Google Hosting Projects
[tags]google, open source, projects, vim, python, wordpress, plugin[/tags]
Google created a new service for OSS developers to host projects. It’s currently very, very simple but I put the vim-postblog plugin there. Check it out and well if there are any issues you’d like to add go for it.
Writing words vs. writing software
[tags]37signals, writing, development, creativity[/tags]
Writing Words vs Writing Software has been an enlightening read. I’ve noticed a lot of problems that I have after reading it. This is writing words or writing software! I seem to keep thinking about the words, but never actually write them down. I hope you enjoy reading it as it’s a very good article.
I promise I’ll put more development stuff out as I am writing about the objective (non political) stuff that interests me.
Strike Up The Branding: How to Design for Branding
[tags]branding, business, marketing[/tags]
This is a great Google Tech Talk on branding by Jared M. Spool. It talks about the associations that people make with branding and how that effects people views of the products. For example, people have low expectation of Walmart and a high expectation of Sony. If we say take a same exact computer, but put a Walmart brand on it people will think of it as being low quality. While if we put a Sony logo on it people will thing it is of higher quality.
So the way things are branded effects how people percieve a product. Not all branding may be good, but people associate brands with certain things they’d like to do. Like say overnight delivery we’d think of FedEx, UPS or DHL. This is because these companies have worked so hard to embed those brands in us. It’s the same with cell phone companies. Think of how well Cingular has made us remember the Orange man as being Cingular. When we see that we know it is Cingular.
Well enough of me explaining it watch the video this guy is awesome!
Newsvine
[tags]news, newsvine, journalism[/tags]
Well I found a news site that I can finally agree with which gives people the power of journalism. It’s called Newsvine! I like to keep this blog as technology related as possible so I don’t get into other aspects of life that interest me. However, I must promote this since it’s such a great idea! (Well I think it’s a great idea!)
Thomas Jefferson said, “A press that is free to investigate and criticize the government is absolutely essential in a nation that practices self-government and is therefore dependent on an educated and enlightened citizenry.” We live in a time when media ignores the crucial information and promotes news that makes them money. This is a way for people to fight back.
While Newsvine isn’t like traditional news company, it has aspects of it combined with the social networking revolution that is going on. So it’s a combination of the old with the new. This is great since not everything everyone says is objective and it is good to have objective sources in the news, actually it is very important!
Anyways I don’t think I described anything of relevance other then a very, very general overview of what Newsvine is. So go check it out! My “column” is here.
startup.com
[tags]video, startup, entrepreneurship, relationships[/tags]
I think this is a great documentary of the darker side of startups the personal relationships that can be challenged, the VCs not always cooperating and just the very human side of doing a business.
Scheduling Project Redo
[tags]schedule, project, callug, javascript, php, abstraction[/tags]
So my Scheduling Project has been a spectacular failure! This is because of some choices that I made handling the complexity of the thing even when it was simple. So instead of complaining about how it failed let me write about what I did wrong and some things I did right.
Abstraction was sort of a failure. Instead of abstracting the code to handle the database queries and such I kept it tightly integrated with php which is a dumb idea as I did not know if I would be changing databases at will. Knowing me I don’t know which database I’d be using next or even text files!
The ugliness that is my php scripts. I don’t know, but I don’t consider php a beautiful language so I guess I thought I could get away with ugly code. Well that code even though it worked just didn’t modivate me to continue writing. The code also made some ridiculous calls directly to MySQL which was a mess as it was not really hidden and in a global scope. So I guess one thing to say PHP = Ugly!
Complexity of JavaScript. Although Prototype helped a lot it doesn’t make up for someone still learning JavaScript. In the end the code was just plain hard to understand. I had to remove the place to enter controlnumbers cause the code was too hard for even me to understand! So what have I learned out of this? Split the code out by what part of the html it handles and separate the logic out between them in a coherent manner. Also trying to put understandable variable names is a plus.
No testing = bad! Well this should be a given. I didn’t test my code at all other then what I saw and used. If it worked it worked, but I got a lot of errors along the way so I should have tested! Unittests would have been a great help.
So what did I do right? I decided to use Prototype. That helped a lot since it abstracted out a lot of things that otherwise would have taken time to do. I documented well what worked and didn’t work. I tested often between steps to see everything was working well (between steps).
What will I do for the next iteration? Well I have decided to plan out what I need to do and work at the goal. I found out that creating this application isn’t hard if the right choices are made at the beginning (picking the abstractions, libraries and etc.). I will write the unittests first then write the actual code. UI logic and scheduling logic will be seperated out so its easier to understand and code. I’ll actually learn JavaScript before starting! I will be using Python for the server end.
Well I hope this helps anyone developing anything of what to lookout for.
Childhood Nickelodeon
[tags]childhood, nick[/tags]
The memories I have of that channel when that was shown. None of the crap they call shows now.
Y-Combinator
[tags]functional, programming, scheme, lisp, examples[/tags]
When we use define to define a procedure in Scheme we are removing a
level of functional from functional programming. That statement may
confuse you since it does confuse me, so an example!
Normally say I have want to use a procedure square in my program.
I run:
(square 2)
*** Error:
unbound variable: square
Current eval stack:
__________________
0 (square 2)
Now square is supposed to be safe and functional and give us what
we want for what we give it. So we have to define it.
(define (square x) (* x x))
Now we run the code.
(square 2) 4
As you can see square doesn’t always return what we want and is prone
to error if it’s not defined. However, it’s a work around of convienience.
So what does a purely functional square look like?
((lambda (x) (* x x)) 2) 4
Yes, yes as you can see we just send the lambda each time we want to
talk to the function. Now what about complex recursive functions like
factorials? Well we can still do it as can be seen below for the
factorial of 10.
((lambda (func) (func 10 func))
(lambda (n func)
(if (= n 1)
1
(* n (func (- n 1) func)))))
Scheme Recursive vs. Iterative
[tags]scheme, lisp, examples,[/tags]
This was bugging me in my 61a discussion earlier so I thought I post this here. These are invalidly named fact, they should be falling-factorials or some sort. Since that is what they are.
This should be of the form ff = n*(n-1)*(n-2)*…*k so a call like
(fact 5 3) should return 60 since 5*4*3=60.
; Works
(define (fact n k)
(if (= n k)
k
(* n (fact (- n 1) k))))
; Works
(define (fact2 n k)
(if (= k 0)
1
(* n (fact2 (- n 1) (- k 1)))))
; Works
; Iterative version of that above. It works
; because we are subtracting from
(define (fact3 n k)
(define (ff-iter n k curval)
(if (= k 0)
curval
(ff-iter (- n 1) (- k 1) (* n curval))))
(ff-iter n k 1))
; Doesn't work
(define (fact4 n k)
(define (ff-iter n k curval)
(if (= n k)
curval
(ff-iter (- n 1) k (* n curval))))
(ff-iter n k k))
; why calling like (ff-iter n k 1) results like this
; (fact4 5 3 1) =>
; (fact4 4 3 5) =>
; (fact4 3 3 20) => 20 (==> Need one more recursion to get 60)
; Here it isn't working properly since we are recursing the
; same way as curval which is multiplying forward instead of backwards.
;
; Calling (ff-iter n k k) works though
; (fact 5 3 3) =>
; (fact 4 3 15) =>
; (fact 3 3 60) => 60
; Here the iterative is acting more like the recursive
; of what curval is storing. So it works