lipstick on a pig

…yeah, so as soon as I saw the business card, I knew we had to go BOLD!

and the result: RemodelingBerksCounty.com

Seriously, if you meet Eric Schultz and hear his story, you will be amazed – and he does incredible work too.

So we started out by finding a domain name that fits, and I was surprised to find that remodelingberkscounty.com was available. This was an early win for us and it set the tone for the rest of the project. We sat and talked – and talked and talked – he showed me his portfolio, explained how he works – he actually told me the best way to put up the child-gate so as not to damage the plaster in my old house. Tolu (my son) hates the gate!

Once we had a rapport going, he literally left everything else to me.

I was “lucky” that he LOVED the design after the first round – that usually never happens, actually, that has never happened to me.

Eric came to me through a referral from a buddy at church (thank you Eddie) and I knew I couldn’t let him down. The good thing about referrals is that, there is already a level of trust there and you don’t have to do a “dog-and-pony” show to gain some credibility.

I like Eric because he likes to keep things simple, and he knows what he wants.

The funnest part of this project was writing all the copy for the site.
Check out the WORKS page.
A line that I am particularly proud of is:

If your house is a pig, and you need some lipstick, I’m your man.

I can help you too… say whaaa…

God loves Haiti.

you see clips of what Pat Robertson said about Haiti all over the internet

I totally appreciate Donald Miller’s response on his blog, at the end he notes that:

* I understand that many of you will want to comment on the theological truths you’ve found that support Robertson’s comments, and also on the good that Robertson has done. Regarding the latter, this was not a blanket dismissal on Robertson’s life or ministry, it was a response to a comment, regarding the former, it’s a debate I ask you to take somewhere else. Also, this isn’t meant to harshly judge Robertson, it’s meant to calm those who might want to throw a tomato at him, while also trying to understand why somebody could make such an insensitive comment at such a painful time. Lets put our tomatoes down.

* For those thinking this blog was too harsh, please understand that in one passing comment, Pat Robertson painted an entire nation as Godless, and deserving of destruction. Reports from Haiti have stated that many fled into the streets, crying out to Jesus for help. Robertson, by referencing an obscure book of unknown origin chose to prejudice an otherwise ignorant Christian audience of gullible and trusting viewers. I propose, then, this post needed to be written. I only wish more Christian leaders would speak during moments like this.

A Response to Pat Robertson’s Comments about Haiti

CBN issued a press release:

This history, combined with the horrible state of the country, has led countless scholars and religious figures over the centuries to believe the country is cursed. Dr. Robertson never stated that the earthquake was God’s wrath. If you watch the entire video segment, Dr. Robertson’s compassion for the people of Haiti is clear.

People are suffering! One day we’ll know everything, until then…

go to yele.org and donate.
or
Please do something!
or
HELP

finding my place

They say that the best solutions fill a void or meet a need.

Read this and then come back: ARE WEB AGENCIES DESIGN-HEAVY?

From my experience, I think web agencies are design heavy and they should be – because sexy aesthetics sell. I’ve visited several “studios” and web design environments, and they are all pretty awesome, super cool, sleek and creative environments that the principals love to show off – as if the environment were the showcase piece of their portfolio.

This is all fine and dandy, but when it comes to programming, some of these environments could be frustrating. And it is not always feasible to productively write code or do analytical work. Sometimes the music is too loud, or there are waay too many forms of distraction, and sometimes the creative, clashes with the analytical process.

What I am trying to say is that “design” environments might not always be conducive for application developers (coders.) And agencies do not always have the work flow that requires the services of a full-time dedicated application developer. It’s interesting because the industry is providing a solution to this conundrum. A new kind of developer is emerging. Designers are crossing the boundary into development and vice versa. Some people even dub themselves as “Devigners.” For these people, the aforementioned studios are the perfect environment. A perfect blend of the creative and the analytical. Web design agencies should attract, nurture and retain these kinds of people.

But there are instances when someone with a focused application development skill-set is needed.

I do not think design agencies should be over-staffed on the development side of things. I think just as the Devigner role has emerged, web application developers are also being clearly defined. Building a web application is becoming a very specialized task – with applications becoming more and more complex – it requires a solid understanding of data stores, server architecture, usability, performance… and so on.

I was mostly a “CMS wrangler” (CMS = Content management System) for the first 2.5+ years of my independent contractor career. I customized and sometimes re-engineered Dotnetnuke and WordPress to meet my demands. But it wasn’t always so; one of the highlights of my freelance career was building a custom Content Management System (CMS) for the Smithsonian Institution Museum of Natural History. This was an exhilarating project! The web-based CMS allowed museum staff to manage their digital signage which was developed using Adobe Flash technology.

I miss building web-applications. One which has stood the test of time is Sovereign Bank’s Branch and ATM Locator which was built at the end of 2006.

Bear with me for a little longer…

At least once every 6 months (or whenever she is filling out forms) my wife asks me: “what is it you do again?” and I kinda fumble when I tell her that I am programmer or developer or web developer (not web designer) …bla bla bla… This becomes a problem when you are trying to sell yourself to a client.

Before I can truly determine my place, I must to determine my space.

I might be opening up a can of worms here, but I want to clarify some popular web terminology (according to bala):

web design: make it LOOK good

web development: make it WORK good

web applications allow us to accomplish one or more tasks.
- example: gmail, wordpress, twitter

a static website provides information (text, pictures, sounds, video)
- example: cnn.com

a dynamic website is a static website that has one or more web applications
- example: facebook, twitter

front-end developer builds a static website (devigners and wranglers fall into this category as well – using a CMS to build a static site)

back-end developer (or programmer) builds dynamic websites.

here is what wikipedia thinks: web design, web development, web application

what are your definitions?

So I am dubbing myself as web guy who specializes in web application development. Check out what I can do…

In the coming weeks, I’ll be spreading the word to see if any agencies could use front-end and back-end web development help.

talk to me!

appengine and python…

I once read that “…simplicity is king” . This cannot be more true when applied to programming. There are a LOT of different categories of programming languages out there and I find myself attracted to programming languages that offer a higher level of abstraction. Not because I am lazy, but because it is simpler to work with.

Let me explain…

high-level of abstraction = high-level programming language = more legible code = easier. example: Visual Basic

low-level of abstraction = low-level programming language = not so legible code = looks like machine code = more difficult = super efficient and generally faster. example: assembly language

There is a place and time for the different types of languages, although, the introduction of some high-level languages (Visual Basic) has drawn the scorn of many purists. They argue that because the coding syntax is more semantic and easier to understand, un-qualified people are now flocking into the field of programming. Some go to the extent of blaming part of the dot com crash of the 90′s to poor VBScript developers. The claim is that easier = lazier.

I definitely do not think that programming is for everyone. But imagine an excellent programmer that is equipped with the benefits that come with high-level (easier) languages. A programmer that is not hindered by difficult syntax and complex programming structures.

This is why I think that formal training in the art of computer science is so essential. I am grateful that in college, my resolve to be a programmer was put to the test with courses that required the use of low-level languages like assembly language and data-structured (functional) language like Common Lisp, and (not so low-level like) C++ and Java. This was before we were ever introduced to Visual Basic and PHP. Going through the grueling process of understanding data sections and data structures and pointers and inheritance and constructors and destructors… has made me a better programmer. And I’ve come to appreciate the higher-level languages like PHP and C# that help me get work done fast and efficiently in the real world.

NOW to Python and appengine…

I have to say that Python is a beautiful (high-level) language. And Google’s appengine platform is crazy responsive (surprised?). I tried developing on salesforce.com’s offering of a platform as a service (PAAS) and I was not impressed. Using the eclipse IDE to build on salesforce.com’s cloud was not responsive and seemed bloated – IMHO.

So I decided to use my latest pet project to try out Python and Google’s PAAS offering. In anticipation of a sucky PAAS experience, I started out using the Django framework on my local server.

My initial perception is that Python just seems to get out of the way, and allows you to get to work. There are many benefits to Python, one of my favorites right now is:

Maintainable Python: Python’s elegant simplicity yields code that is not only readable, but also easy to redesign and modify. Because Python’s syntax uses indentation to define program structure, code is easy to move around, making it a snap to split up modules or restructure classes. Less time is spent understanding and rewriting code, which leads to faster bug fixes, faster development and integration of new features, and a better-designed code base.
from: http://www.wingware.com/python/benefits

for example, this is how you would query the zillow api to get the zestimate of a property and the high and low valuation;


...
        rpc = urlfetch.create_rpc()
        urlfetch.make_fetch_call(rpc, zillowurl)
        try:
            result = rpc.get_result()
            if result.status_code == 200:
            	dom = minidom.parseString(result.content)

            	#message
            	msg = dom.getElementsByTagName("message")[0]
            	result_node = dom.getElementsByTagName("result")[0]

            	message = msg.getElementsByTagName("text")[0].firstChild.data

            	if msg.getElementsByTagName("code")[0].firstChild.data == '0':
            		zesti = result_node.getElementsByTagName("zestimate")[0]

            		zestimate = zesti.getElementsByTagName("amount")[0].firstChild.data
            		zvaluation = zesti.getElementsByTagName("valuationRange")[0]
            		lowvaluation = zvaluation.getElementsByTagName("low")[0].firstChild.data
            		highvaluation = zvaluation.getElementsByTagName("high")[0].firstChild.data

            		zproperty = ({'zestimate':zestimate,
            					'lowvaluation':lowvaluation,
            					'highvaluation':highvaluation})

            	#self.response.out.write(zamount[0].firstChild.data)

        except urlfetch.DownloadError:
            message = 'There was an error retrieving the Zestimate, please try again later.'

	template_values = {
            'zproperty': zproperty,
            'message':message,
            }

		path = os.path.join(os.path.dirname(__file__), 'index.html')
		self.response.out.write(template.render(path, template_values))

...

SO:
Python ROCKS
Django ROCKS
Appengine ROCKS

I just need to find projects where I can apply this stuff!!!

ps: some people are experiencing similar ecstasy with Ruby (on Rails), more power to you, lets change the world with code…