Categories
computer personal

Logical Programming With ruby-prolog Slides

rubyI gave a ~1 hour talk last night to the Phoenix Ruby developers group on how to implement logical programming concepts in Ruby using the ruby-prolog gem recently released by OpenRain. Enjoy!

[Keynote] [PDF] [Slideshare] [Code] [Releases]

Categories
computer

The Truth About Integrating Rails In The Enterprise

Ruby on Rails is a great RAD framework. We use it all the time. But one place Rails loses its magic–while not the fault of the framework itself–is with external integrations to legacy systems.

First of all, soap4r sucks. Everyone I’ve seen try to pick it up has gotten frustrated and angry at how awkward it is to write a SOAP client in Ruby compared to Java and .Net tools, which can do the same thing in a matter of minutes. Since RoR IDEs aren’t exactly 1337 yet, we need to put some serious love here as a community to prevent larger companies with heavy SOA leanings from running away screaming.

For some reason, many people seem to think that pouring t3h Rails int3rn3ts into an infrastructure will suddenly trim 75%+ off all development and maintenance costs, complete with rounded corners and shrink-wrapped buttons. Wrong. Many of the development tasks will take significantly shorter times to develop under timeframe expectations relative to Java and .Net, yes, but you can’t avoid costs associated with migrating legacy data and integrating with retarded external systems such as your ghetto-ass SOAP services. Nor should you avoid design activities such as usability analysis or proper testing practices. 

So if you have a web project that lives in complete isolation and does not have any legacy issues with which to deal, OpenRain can bust out that web project in a heartbeat. But if you have unresolved data management and integration issues, there is no acts_as_silver_bullet plugin which can save you the burden of having to actually think about and address those problems. Rails isn’t the cold bucket of water for your data nightmares.

Categories
computer

Hiring For IT: What We’re Doing Wrong & How To Fix It

HR departments for many technology firms tend to be a bit backwards in the way they evaluate potential hires. Early in the process, an HR member or technical recruiter will typically contribute to the never ending stream of listings posted to the popular online job sites, and funnel the subsequent flood of applicants through a filter before passing on candidates to the geeks. The key issue is that HR cannot realistically be expected to hold all the technical knowledge necessary to appropriately evaluate and filter applicants based on technical criteria. Many resumes are thus evaluated solely off keywords or ridiculous automated online exams that supposedly quantify a candidates abilities based off asinine declarative factoids.

My personal hiring strategy, while admittedly skewed towards finding only top tier entrepreneurial people, follows these steps..

  1. Go to the core of The Right Persons culture. Forget about the “Java” checkbox on Dice.com. Figure out what The Right Person does online, and go there directly. Post a Java job to the local JUG mailing list, or a Ruby job to the Ruby talk group, for example. Only people genuinely into these topics sign up for mailing lists and forums, so by going straight to the cultural center of the ideal candidates interests you’ve already filtered out the dingbats who would apply just for the sake of applying. The Right Person is probably already employeed and thus would not be checking monster.com anyway. Allow HR to apply their own filters after you’ve identified the right culture.
  2. Evaluate their communication skills via email and phone. When was the last time you read an uber-competent technologist who ended every sentence with three exclamation points and a smiley face!!! 🙂 Yeah.. me neither. The subtleties of written language reveal how in touch one is with technical culture. They might have extensive experience with 16 different databases on their resume, but if they can’t explain — in layman’s terms — what a database driver does, I can’t see him/her being able to produce well-documented results or be terribly useful in business meetings. Ar-tic-u-la-tion of one’s thoughts in both written and spoken word is critical to effectiveness.
  3. Talk about technology in general. I do not expect you to know the internals of the JVM to be qualified for a Java developer position. I do expect you to keep current on general technology trends and always have your ears open. I expect you to constantly learn and get your hands dirty, and I expect you’ve done some of it on your own time.
  4. Ask the right questions.What type of Exception does Socket.close() throw?” would be the wrong question. Phrase your technical inquires such that they are open ended, recognize that He/She Is Not Google, and allow the respondent to give an intelligent response even if they do not know the answer. Example: “How would you describe the lifecycle of a network connection?” The question is specific enough such that a knowledgeable person can immediately give a thorough answer, but not overly so such that it is a miniscule factoid you’d see on Jeopardy. Also ask questions which are subjective or provide incomplete information, such as, “Which Java OR/M technology would you use in a new web application?“. You’re not looking for a “correct” response, but to gauge how’ll they’ll react when prompted with incomplete, unclear or clearly stupid business requests. Just like the real world. Arrogance and stubbornness can often show through with a definitive answer to such questions, whereas a more pragmatic person might say “It depends.” followed by a diatribe on the pros and cons of various options, none of which a singularly “correct”.
  5. Invest the time. Many large companies outsource recruitment because they see it as a secondary distraction to the organizations primary tasks. But the thing is… putting the right people in the right roles is as core to your business as it gets. And for the prices charged by technical recruiters, the $20K+ per head can easily be spent on competent geek personnel dedicated to networking in the correct communities for purposes of recruitment.

But don’t fret: there are companies trying to change the system. For the time being, however, keep this mind next time you hear an interview going on down the hall…

Organization and role-specific cultural requirements come first; HR policy requirements come second.

Categories
Uncategorized

Presenting At Phoenix Ruby Monday, February 9th

I’ll be giving a technical presentation to the Phoenix Ruby User Group on Monday, February 9th at 6:30pm. The topic will be using logical programming Prolog concepts within the object-oriented Ruby programming language using the ruby_prolog gem. Attendance is free and open!

Categories
personal

Everyone Should Grow Up Poor

There are only two relatives I’ve ever known to whom I’ve felt a strong biological connection. One of them died last month. This is a tribute to her…

I spent the majority of my early childhood growing up with my mother in a single-room add-on attached to the side of my grandmothers house in a Northern suburb of Chicago.

My mother never went to college and worked very hard to keep us financially safe doing jobs such as data entry. She is a very hard worker that gains personal satisfaction from a job well done and was always gainfully employed, so we were never poor in the hungry, homeless or other romantic sense, but firmly lower class, yes. My mom still loves to tell the story of how I didn’t understand you could purchase food without a coupon clipped from the Sunday paper. She didn’t have a lot of free personal time due to being a single parent, but made it work. I don’t think I would handle that lifestyle well, and have a tremendous respect for single parents trying to make ends meet while “being there” for the kid(s). I was even fortunate enough to get a hand-me-down obsoleted Macintosh computer from my mother’s coworker on which I typed school papers from elementary school until high school.

The land and house I grew up in had been established by my grandparents some years after World War II. My grandma grew up on a farm and filled the house walls with rural-feeling nick-nacks and small-town artifacts. The surrounding neighborhood became caught in urban sprawl and began to transform into luxurious mansions settled comfortably on 1-acre lots.

My father is a South Korean immigrant who came to America for a better life, and eventually found his place in California. The balls it takes to pack a suitcase and move to a foreign country with a pocket full of dreams continues to astound me. I recall listening to him confidently lay out his plans to run his own successful businesses as so many other Asian immigrants did in Los Angeles. Looking back on the first 18 years of my life, I now realize…

Having less in an environment of opportunity can be empowering.

When you have less, you feel like you must improve yourself to be noticed amongst peers. No one can fix a situation with a magic wand should you fail, so you must dedicate yourself to tasks because success will not otherwise come. And if you succeed, you’re not stuck with a convoluted sense of entitlement to a world full of subordinate peons. You know exactly how hard it is to make it in life because you’ve seen the sacrifices and tears from your family and friends. You chose your fate, and made it come true.

I enjoy the niceties in life just as much as the next guy (who doesn’t?), but I feel good that I don’t feel entitled to them. I know that if I get a nice dinner or fun new toy, I earned it, and I’m going to be more proud and protective of it than if you just handed it to me. It’s not just another disposable object; it’s mine because I consciously caused a chain of meaningful events resulting in a reward. Push the button, get a treat.

So here’s the deal. If you win the next Powerball jackpot, you get to keep a few million to secure your home, family and reasonable lifestyle, and have some fun while you’re at it. Go for it. Take a vacation on the International Space Station or something. I’d do the same. But you don’t get to blow $5 million in Vegas or $50 million on a toy.

You hire a financial management team and get to work doing something meaningful with your fortune (and your life) by sheltering homeless children, curing cancer, somethingMake the world a better place. And if you’re investing wisely, you’ll feed off the inherent greed of the system and use the profits to further your own philanthropy. Keep the compassion, dreams and simple contentment of being poor, and use the power of being rich to change the world.

The fated rich have not such empathy for the masses.

Do not strive to be rich. Do not strive to possess. Do not strive to control. Do not seek admiration of the world. Do not seek approval of authority. Do not strive to be popular. Do not be a pessimist. Do not dwell on the past.

Strive to be wise. Strive to be kind. Strive to be selfless. Strive to be loving. Strive to be more. Strive to do more. Strive to use less. Strive to be an example. Strive to leave the world a better place than you found it.

Strive to redefine humanity.

Categories
computer

How To Change A WordPress Permalink Structure While Preserving SEO

permalink_redirect

I’ve been putting off changing my blog permalink structure for about 2 years for fear of getting SEO-smacked by Google. No joke. WordPress allows you to easy change the permalink structure with a few clicks, but doesn’t generate permanent redirect (HTTP 301) responses for visitors using the old link structure. Non-redirection link changes for established blogs extremely unwise since you lose all the SEO goodness with search engines such as Google, so I sat down tonight to figure out how to safely make the change.

The easiest solution is to use the Permalink Redirect WordPress Plugin by Scott Yang. This creates a “Permalink Redirect” page under “Settings” in the WordPress admin area where you may specify the old permalink structure from which to redirect. Incoming visitors to the old URLs will automatically 301 permanent redirect to the new URL structure as expected. Thanks, Scott!

I also tried the redirection features of the Platinum SEO and Advanced Permalinks plugins. Platinum SEO can handle post-specific permalink changes, but not site-wide permalink changes. Advanced Permalinks is no longer maintained and did not work for me within WordPress 2.7.

Categories
Uncategorized

Book Review: slide:ology

slideology

I recently received a review copy of slide:ology – The art and science of creating great presentations by Nancy Duarte, published by O’Reilly Media. I’m consciously making an effort to increase my frequency of speaking engagements, so I was thrilled to see a modern text on visual aids from a heavy usability-oriented angle. I’ve read the first two chapters so far and skimmed the majority of the remainder.

slide:ology is cleverly designed to read and flow like a presentation itself, although the content is far more in depth than an ordinary slide deck. Each of the 275 pages is a pleasure to look at, and the individual page designs themselves provide a great deal of inspiration. I’m particularly thrilled to see such creative use of negative space and negative geometry in many of the designs. Many texts on marketing effectively use the exact opposite approach.

Pros

  • Visually inspirational. Tons of great ideal for your next keynote.
  • Useful outside of the speaking domain. Many of the design ideas can be applied to print media and web design as well.
  • Good copy which is brief and easy to follow.
  • Reasonably priced.
  • A great coffee table/break room book.

Cons

  • You may have to implement many of these designs yourself. I’d easily pay an extra $5 for an optional download of Keynote templates ready to go, as well as the raw graphics files used in production.
  • A slightly awkward print format. I understand why, but it doesn’t fit as well on the shelf as I’d life.

Overall, slide:ology is a great little piece of speaking inspiration by Nancy Duarte. Great job! (I expect more like this.)

Buy slide:ology here.

Categories
computer

The Three Types of Start-Ups

At OpenRain Elite Web Software we’ve seen all the popular combinations of startup business models when evaluating new projects. Here is a breakdown of the three most common startup models based on financial structure, the pros and cons of each, and recommendations on which one to choose for your new venture.

 

1) The Pop-Start

The pop-start–short for “popular startup”–is the stereotypical venture capital (VC) or Angel backed venture wherein an initial product prototype is created with a small angel fund, pitched to investors once (barely) operational, and subsequently funded for $1M+ in a second, third etc. round to fund growth to a profitable status. As each round is collected, additional personnel are generally hired immediately to kick off additional production development in a (hopefully correct) high-velocity direction.

Pros

  • Should you raise enough in your initial rounds and find the right people, you’ll be able to keep the company operational in the early growth stages without incessant worry on keeping positive cash flow, which, depending on the idea, may not be possible.
  • Fast growth once the big investment dollars roll in.
  • A minimum of personal risk since only the initial angel round will likely come from close ties. 

Cons

  • Tons of investor pitches and marketing/sales-speak on vaporware which will drive technical people insane.
  • Legal issues from the get-go. Expect difficult negotiations with second round investors and costly legal fees.
  • You’ll have to put up cash for airfare, lodging, marketing materials, legal fees etc. up front for possibly dozens of remote meetings. The costs add up fast.
  • Large amounts of constant pressure from investors.

This is for you if…

  • Your idea requires a substantial capital investment to get off the ground, such as $100K in federal licensing costs or $500K in manufacturing equipment for a first line of production product. You legitimately need this funding to get off the ground, and the amount is too large to put up yourself.
  • Your exit strategy is getting bought out by Google for $100B.
  • You can afford the risk of working on this full time, with little (or no) compensation up front and no gaurantees on a second round of funding.

 

2) The Weekend Warrior

The proliferation of online services for company creation has allowed many dreamers to create legitimate legal business shells in free time for hundreds of dollars. The weekend warrior start-ups are those who believe in the idea, but cannot financially afford to quit day jobs.

Pros

  • Low risk. If the company fails, you still have your day job.
  • Low cost. You still have the income from your day job, so eating small operational costs should be easy. If you’re supporting a large family on a single income, this may be your best option.

Cons

  • Making progress is painfully slow since it’s an “in my spare time” project.
  • People will not take your business as seriously since you are not committing your livelihood to it.
  • The logistics of getting things done off-hours can be challenging, such as finding the time for calls during business hours without interfering with your day job.  

This is for you if…

  • You can only commit yourself to working nights and weekends.
  • You cannot accept large financial risk.
  • You do not require large capital investments to reach financially sustainable operation.
  • You can accept the fact that progress and growth will be slow.

 

3) The Self Serve

Self Serve businesses are full-time owner operated organizations which grow based on their own performance, rather than external investment. They are self-funded, full-time ventures which put the responsibility of success squarely on the owner(s) since there is often no formal governing board. OpenRain’s web development business started this way, and continues to be entirely self funded.

Pros

  • No pressure from investors.
  • Full-time personal investment gives you time to put operations in order.
  • Will be taken seriously by potential clients/customers.

Cons

  • Self-funded. This can be mitigated by limiting personal credit exposure, but there’s no getting around the fact that initial operating costs will need to come out-of-pocket, and losses may personally bite you regardless of the precautions you take.
  • Personal pressure to constantly generate income since your personal income will be determined by the performance of the company.

This is for you if…

  • External funding is not appropriate or necessary for your idea.
  • You (and you business partners) are comfortable operating the entirety of a business amongst yourselves, our are able to invest in quality people to fill in the holes as soon as possible. Technical work, finances, marketing, sales, human resources, operations and 8000 other miscellaneous tasks will crop up needing someone’s attention. And that someone is you.
Categories
computer

Major Seagate/Maxtor Fail

drive_failIt’s Friday, 10pm, and I’m not a happy camper. This picture is me holding a pile of ordinary hard drives I keep on my home desk. They are cycling backup drives and are not in any way frequently used. Four are Seagate Barracudas–one of which I’ve already had replaced–and the fifth a Maxtor DiamondMax. The oldest of the bunch appears to be from 2002 and all are PATA 200-250GB models. 

I’m unhappy because I picked them up tonight to run a very infrequent backup of all my household data: over a TiB worth while requiring the use of all of them for a complete home backup. Much too my dismay, I won’t be running any backups this weekend.

Failure rate: 100%. (5 out of 5 failures.)

I haven’t been this unhappy with a manufacturer since the last of my IBM DeathStars failed around 2003. Fortunately all the Seagate models are still under warrantee, but such performance is still disheartening and frustrating.

What’s happened to quality drive manufacturing in the 21st century? Some of the ~10MB hard drives in my 486-era machines easily lasted 10+ years, but a single drive these days lasting over 3 seems ever more scarce. Sigh.

Categories
computer personal

Asset Tracking Webapp Written In Ruby On Rails

 

asset_tracker
Keeping track of company assets is important for insurance, warrantee and general informational purposes for purchased software licenses and hardware. I wanted a dirt-simple webapp written in Ruby on Rails, so I wrote one the other night and put the code on github. It’s a really simple Rails 2.2.2 app … no frills but does the job. If anyone would like to add some frills such as searching, sorting, pagination etc. I’d be happy to pull them back in. OpenRain would be very thankful 🙂
asset_tracker 
“A simple web-based asset tracking system for small businesses written in Ruby on Rails (RoR). New equipment is assigned to a specific location and the responsible person is notified of the assignment. You may optionally add serial numbers and an arbitrary amount of notes to each asset. Configured to run on top of PostgreSQL and sendmail by default, though both are reconfigurable.”