{
  

    "blog-2026-01-26-investors-getting-paid": {
      "title": "Investors Getting Paid",
      "content"	 : "Keeping PromisesDelivering on promises feels incredible.Last week, my partners and I hit a button to distribute returns to our investors.Behind the scenes? Months of coordinated effort from the entire team. Underwriting, operations, and asset management all coming together to make it happen seamlessly.Thank You to Our InvestorsTo every investor who trusts us with their capital: Thank you. Your partnership fuels what we do. Seeing these distributions go out is the best part of the job.In Arizona’s multifamily space, we’re seeing signs of stabilization heading into 2026. Easing new supply, resilient demand from population growth and job creation, and opportunities emerging for well-positioned acquisitions.Moments like this remind us why we stay disciplined and focused on value-add plays that generate real, consistent returns.What’s Your Story?What about you? What’s one recent win in your portfolio that’s got you excited for the year ahead?Drop it in the comments, and let’s celebrate your win!",
      "url": " /blog/2026/01/26/investors-getting-paid/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-12-01-another-closing": {
      "title": "Another Closing!",
      "content"	 : "The ROIClear team has closed another deal. Just in time for year-end!Shout out to our partners at Asym Capital (Hunter Thompson and Tyler Lyons) and Keljam Properties (Jimmy McGrath) for a smooth collaboration.Highlights:  Class B. Built in 1981.  56 units. 98% occupied.  $10.4 million purchase price.  Eligible for 100% Bonus Depreciation in 2025. Please see your CPA and/or tax advisor for details on anything related to taxes.  Purchased from a “Mom &amp;amp; Pop” seller who owned the asset for 35 years.  Purchase price = $186k/unit. Similar asset across the street sold for $300k/unit in 2022. So the basis is low.Next StepsDid you miss this one? Want to hear about the next one?Sign up on the ROIClear Investor Portal to keep yourself in the loop.Glad to share info w/you on how we produce results for our investors.",
      "url": " /blog/2025/12/01/another-closing/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-09-01-strike-while-the-iron-is-hot": {
      "title": "Strike While the Iron is Hot",
      "content"	 : "Entrepreneurs are hard workers.But hard work is only one requirement for success.Do we apply our hard work at the right time?Do we harvest the crops when the fruit is ripe to be plucked?Do we swing when the baseball is in the strike zone?Do we Strike While the IRON is HOT?Many operators have left the market, for various reasons.Leaving lots of opportunities for those of us who remain.The iron is HOT.Are you ready to strike?When was the last time YOU took a STRIKE at the IRON?",
      "url": " /blog/2025/09/01/strike-while-the-iron-is-hot/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-06-09-ai-chainsaw": {
      "title": "AI Chainsaw",
      "content"	 : "AI is a chainsaw in a world of axes. Learn to use the chainsaw.Artificial Intelligence with Catherine BellCatherine Bell consistently gives spell-binding accounts of her experiments with AI. Earlier this year during RaiseFest, she kicked off her AI presentation with a metaphor about an axe.  If you’re a lumberjack and you spend years chopping trees with an axe, you’ll eventually get good at it.  What if someone hands you a chainsaw, and tells you to use that new device instead?  If you’ve never seen a chainsaw before, you might try swinging it at a tree (as you did with the axe). That doesn’t work.  Better way to move forward: Learn how to use the chainsaw, including cleaning, fueling, and regular maintenance.In summary: AI is a chainsaw in a world of axes. Learn to use the chainsaw.",
      "url": " /blog/2025/06/09/ai-chainsaw/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-05-23-how-to-ask-for-advice": {
      "title": "How to Ask for Advice",
      "content"	 : "Want the best advice? Here’s how to get it. Sources are cited at the end of this article:  Ask only credible people (Ray Dalio: “have done the thing successfully, multiple times, and can articulate how”)  Consider their incentives (don’t ask a barber whether you need a haircut)  Ask for frameworks, not answers (never delegate your thinking)  Make sure you fully understand the advice — ask for examples, repeat the advice back and ask if you got it right  Backtest the advice: think of times you could have followed it, think of what would have happened  Once you’ve accepted the advice, take immediate steps to implement it! Surprising how often folks (including me) skip this step — no point in receiving good advice and doing nothing with itSources: Thank You!Source: Richard C. Wilson (CEO of Family Office Club), reposted this on X from Flo Crivello, tech company founder in Silicon Valley, USA.What’s NextHow about you? What special tools do you use when seeking advice?",
      "url": " /blog/2025/05/23/how-to-ask-for-advice/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-05-19-how-to-build-a-team": {
      "title": "How to Build a Team",
      "content"	 : "Team building and leadership are highly subjective activites. There are many ways to be effective. I do not claim to have “correct” answers, but I can offer some experiences.Personal HistoryMy team and I got to know each others’ strengths and weaknesses by sifting, reviewing, underwriting, and making offers on deals over eighteen months. Let me clarify: We spent eighteen months doing all of that before we closed our first deal together.Core TeamThere are three of us on our core team. We had a few more in the beginning. We all remain friends, but our core three were compatible in terms of work ethic and desire to achieve. Plus we have complimentary skills. One person is strong on UW. Another has great banking and legal relationships. Another manages most of our investor relations &amp;amp; communications.Evolving Roles Based on Needs of the BusinessWe evolved into our roles over time. With each iteration (tour, evaluation, offer, and finally closing) we got to know and trust each other.All of us have been on partnership teams before. All of us have positive and negative experiences to reflect upon.Truth + RespectOne key trait: We’re not afraid to tell each other the truth. Even when it’s uncomfortable. Of course, we always tell the truth with respect. We argue and debate (just like siblings) but we’ve built up enough trust that it doesn’t get personal.First Deal as a TeamNow that we’ve closed our first deal together (94u, $13.6M acquisition, $6.5M raise) we’re in the middle of asset management. And we are facing a whole new set of challenges. Fortunately, the trust that we built during the acquisition phase carries over.Team of Advisors?How did we build our team of advisors? Relationships plus trial &amp;amp; error. Some early professionals did not work out. Others are working in amazing ways. We watch everything and we try to learn from our mistakes.Bottom line: TrustTrustworthy people tend to be magnets for other trustworthy people. And even if you have trust, sometimes things don’t work out due to compatibility issues. Or timing. Or where each person is within their personal life journey. So many variables!Hope this helps. Glad to talk further if you want to dig into this. You can contact me here.",
      "url": " /blog/2025/05/19/how-to-build-a-team/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-05-14-ai-just-got-good-enough": {
      "title": "AI Just Got Good Enough",
      "content"	 : "For Microsoft, AI just got “good enough” to justify replacing 6,000 senior developers overnight.Now, here’s the real question: Does a business leader cower in fear, or can we engage our brains and figure out how to leverage AI in our companies?News Fresh from XDetails are within this post from X.Rapid ChangeI have friends, senior devs at MSFT, who were laid off this week. They were surprised. Change is happening quicker than I expected.What’s our next step as business leaders?  One can cower in the corner and be fearful of the future.  Or… we can embrace AI as a way to deliver better results for our investors. Our customers.Proactive Steps by the ROIClear TeamOn the ROIClear team, we’re experimenting with AI + Financial Analysis + Asset Management.How about you? Let’s share ideas and achieve together!",
      "url": " /blog/2025/05/14/ai-just-got-good-enough/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-04-28-grok-financial-analysis-asset-management": {
      "title": "GROK + Financial Analysis + Asset Management",
      "content"	 : "If you own or asset-manage multifamily properties, you know that it takes a long time to review a monthly financial statement.Rather, it takes a long time to review it thoroughly &amp;amp; WELL.Therefore, I’m experimenting with AI (specifically, Grok by xAI) as a tool for streamlining this task.Prompting GrokHere’s one of the Grok prompts I’m testing:Act as a multifamily asset manager, and review the attached financials (uploaded as an Excel file). * What discrepancies do you see? What potential issues do you see? * Where is the property performing well? Where is the property performing poorly? * What steps would you recommend for improvement? * What additional questions should I be asking you?Grok’s ResponseGrok comes back with a 4-page report with lots of questions.And now we’re having deeper and more substantive conversations with our on-site management team.How About You?Would you like to learn more about this process?Are you doing something clever with AI to streamline asset management and/or financial analysis?If you have a story to share, or if you want more details on how your team is using AI, Grok, and other tools, feel to reach out via the Contact page.Let’s learn from each other!",
      "url": " /blog/2025/04/28/grok-financial-analysis-asset-management/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-03-29-capitalism-vs-socialism": {
      "title": "Capitalism vs Socialism",
      "content"	 : "I don’t know Kris Bickerstaff, personally. But his words about capitalism vs socialism are compelling enough to deserve publication here at RayHightower.com.Perhaps these words give you the same positive lift that they give me.  A guy looked at my airplane the other day and said I wonder how many people I could have fed for the price of that airplane… I replied I am not sure, it fed a lot of families at the Dassault factory where it was built. I’m sure it fed a bunch of families that rolled the aluminum at the Alcoa factory. It surely fed a lot of people at the Honeywell factory where the experts built the turbines. It fed a whole company for a few weeks when I had them build me a new interior. It feeds the families of the linemen that fuel it. That’s the difference between capitalism and a welfare mentality. When you buy something, you put money in people’s pockets, and give them dignity for their skills. When you give someone something for nothing, you rob them of their dignity and self worth. Capitalism is freely giving your money in exchange for something of value. Socialism is taking your money against your will and shoving something down your throat that you never asked for. Well said, Kris Bickerstaff.",
      "url": " /blog/2025/03/29/capitalism-vs-socialism/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-03-14-capitalism-vs-housing-crisis": {
      "title": "Capitalism vs Housing Crisis",
      "content"	 : "Bethany Finch is a dynamic and creative entrepreneur. She and I had a chance to catch up during RaiseFest ‘25 in Phoenix.In this clip, we discuss Bethany’s ideas for solving the housing crisis by creating a structure where multiple stakeholders work together. What an amazing idea!Capitalism Done Right  Find a need and fulfill it. Successful businesses are founded on the needs of people. ~A. G. GastonJust like any outstanding entrepreneur, Bethany has built her business to address certain needs within the market:  Amazon needs employees, and those employees need housing.  Investors need a way for their money to earn money.Through hard work and wit, Bethany and her team have built systems to satisfy the needs of multiple stakeholders at once. Amazon, the employees of Amazon, and investors. They are using entrepreneurship to help solve the housing crisis.That’s how capitalism works. And it is wonderful!Contact BethanyLearn more about Bethany and her team at empcfund.com.",
      "url": " /blog/2025/03/14/capitalism-vs-housing-crisis/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-03-03-spacex-inspiration-excellence": {
      "title": "SpaceX Inspiration &amp; Excellence",
      "content"	 : "SpaceX is building and launching rockets in Starbase, TX (formerly known as Boca Chica).I have visited Starbase every year since 2021. The above video is from my trip in July 2024.Why visit Starbase? Because the experience is absolutely inspiring!SpaceX is on a mission to make humans multi-planetary.To accomplish this goal, SpaceX is:      Building the largest rockets ever created.        Fueling the rockets with methane (instead of regular kerosene-type rocket fuel) because methane is easier to synthesize on any planet with water + carbon dioxide, like Mars.        Making the rockets reusable, to keep costs down and make space reachable.  SpaceX is the first company to create reusable rockets. This is a big deal, a major feat of business acumen and engineering skill!At ROIClear, we admire people and teams who do things well. And we learn from them. We look forward to learning more from SpaceX in coming years!",
      "url": " /blog/2025/03/03/spacex-inspiration-excellence/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-03-01-hard-or-easy-get-it-done": {
      "title": "Hard or Easy? Get It Done.",
      "content"	 : "  It doesn’t matter whether a task is hard or easy. Get it done.Adrian Diaz is one of my business partners, and I am grateful for his wisdom &amp;amp; insight.Recent wisdom from Adrian: It doesn’t matter whether a task is hard or easy, once you make a commitment, you must get it done.",
      "url": " /blog/2025/03/01/hard-or-easy-get-it-done/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-02-25-why-raisefest-phoenix-arizona-2025": {
      "title": "Why RaiseFest?",
      "content"	 : "RaiseFest is the gathering for capital raisers. Capital raising is all about taking capital and matching it with opportunities.  People with capital don’t necessarily have opportunities for putting their capital to work.  People with opportunities (entrepreneurs) don’t necessarily have the capital to make their opportunities grow.That’s why capital raising was born: To make the engine of capitalism hum.And RaiseFest is a major force in the capital raising universe.Kick-Off With Hunter ThompsonRaiseFest was created by Hunter Thompson and the team at Asym Capital. Asym has raised over $80 million in equity for the acquisition of several asset classes including multifamily, mobile home parks, and even ATMs.The latest installment of RaiseFest was held last week in Phoenix, AZ. Roughly 1,000 capital raisers showed up. The networking alone is worth the price of admission. Deals get done between people who know each other.Key point from Hunter’s kick-off presentation: Yes, capital raising is harder than it has been in recent years. And that’s why you want to be in the market right now. When the going gets tough, the less dedicated operators flee, which opens opportunities for those of us who tough-it-out.Ask yourself WHY you’re raising capital.To make it through rough times, you gotta have a WHY. Why do you get up in the morning to build your capital raising business? Are you driven by family, childhood circumstances, or something else? Know yourself!Macro-Economic Trends and EffectsBob Fraser took the stage to share macro trends and how they might impact our investments. Observations shared by Fraser:  Consumer spending is still powering our economy. The bottom 25% are struggling. But the top 25% has record cash to spend.  Investors are sitting on wealth (instead of investing) because they’re uncertain (afraid) of what might happen next.Concessions in the Phoenix ValleyKen McElroy offered some interesting observations about the sub-markets of Phoenix multifamily real estate. At one point, he compared the concessions offered by multifamily properties in different parts of the valley:  West Valley apartment properties are offering two months free rent plus $99 to move in.  The high concession levels in the West Valley are due to overbuilding in that area. We will need to see more absorption before concessions evaporate and rents can be bumped again.  Scottsdale is offering zero concessions. Even with new apartment properties coming online, demand in Scottsdale is high enough to absorb every new unit.  Tempe is offering zero concessions. Demand is driven by the growing student population at ASU.Artificial Intelligence with Catherine BellCatherine Bell consistently gives spell-binding accounts of her experiments with AI. She kicked off her AI presentation with a metaphor about an axe.  If you’re a lumberjack and you spend years chopping trees with an axe, you’ll eventually get good at it.  What if someone hands you a chainsaw, and tells you to use that new device instead?  If you’ve never seen a chainsaw before, you might try swinging it at a tree (as you did with the axe). That doesn’t work.  Better way to move forward: Learn how to use the chainsaw, including cleaning, fueling, and regular maintenance.In summary: AI is a chainsaw in a world of axes. Learn to use the chainsaw.And There’s More…Additional info offered by RaiseFest presenters: Here are a few that stood out for me.  Sarah Morrison &amp;amp; NJ Rongner - How to Stand Out in a Loud Room. Yes, you can use AI, but you’d better edit it.  Rob Beardsley - Closing Deals in 2025. Including some surprising ways to deal with floating rate debt.  Cody Sperber - Instagram Domination. Creating content and boosting follower count.ConclusionThe RaiseFest experience is too rich to be covered in a single blog post. If you’re a capital raiser, make it a point to attend. Looking forward to meeting you at a future event!",
      "url": " /blog/2025/02/25/why-raisefest-phoenix-arizona-2025/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-01-27-delivering-for-our-investors": {
      "title": "Delivering for Our Investors",
      "content"	 : " The above photo shows Colby Fryar, Adrian Diaz, and me after a recent property tour.After walking through a property, we like to put our heads together and compare notes. Questions for discussion:  Is this property a good fit for our buy-box?  If we buy this one, will we make money for our investors?Every deal we choose must deliver the following for our investors:  Capital Preservation  Tax Advantages  Solid ROIWhat a joy to deliver for our investors!",
      "url": " /blog/2025/01/27/delivering-for-our-investors/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2025-01-07-ai-for-accredited-investors": {
      "title": "Lunch + AI for Accredited Investors",
      "content"	 : "  Artificial Intelligence won’t replaceall people. However, it will replace peoplewho don’t know how to use AI. ~ Common Observation About AIAs a business leader, what are you doing to leverage AI tools?If you’re in Arizona and you want answers about AI, consider this event: Lunch + AI for Accredited Investors  Wed, Jan 22, 2025  11:30am - 1:30pm  Cost: $97 (Lunch is included.)  Featuring: Business-driven answers about AI + hands-on exploration of AI tools.Presented by Catherine Bell, organized by AZMM.org. Now, here’s why this matters.About the PresenterAt age 26, Catherine Bell arrived in the United States with nothing but grit and a dream. By age 30, she and her late husband had built and sold a multi-million- dollar company, achieving what many call the American Dream.But Catherine didn’t stop there. She realized true financial freedom comes from passive income and building wealth that creates a ripple effect of impact.Today, Catherine Bell uses AI to grow multiple businesses. Join us for lunch and learn how.Your HostsThis AI gathering is brought to you by AZMM.org, the Arizona Multifamily MasterMind Group. We meet every Friday at 6:55am (yes, AM) like clockwork. And sometimes we gather for lunch.This time, we’re opening our meeting to business leaders who want to benefit from AI. Adrian Diaz, Colby Fryar, and Ray Hightower look forward to meeting you. Come out and learn. And have a great lunch, too!Get Your Ticket. Save Your Spot.Only a few seats are available. Get yours.See you there!",
      "url": " /blog/2025/01/07/ai-for-accredited-investors/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-12-06-sense-of-urgency": {
      "title": "Sense of Urgency",
      "content"	 : "  Why is it important to have a sense of urgency in business? What steps are YOU taking to maintain a sense of urgency in your life?Recently, I had the opportunity to respond to something with an investor, and I could have waited to respond. But I decided to move with urgency instead.I dropped what I was doing. I responded to that investor’s questions immediately.They shot back to me immediately after that. And we were able to consummate a relationship, all because of a sense of urgency.Urgency and MomentumWhen we have a business idea, we are more likely to achieve a favorable result when we move forward with urgency.Executing with a sense of urgency builds momentum, and we increase the odds of a successful result.Hard to AdmitSomething that’s hard for me to admit: I keep learning this lesson over and over again. I learned the urgency lesson years ago, back when I was running my technology company. I’ve re-learned the urgency lesson in multiple real estate deals. I keep needing to learn this lesson repeatedly.I’m sure that you’re not as stubborn as me :-)To My Future SelfSo, I’m recording this video as a form of encouragement to my future self. I must strive for a sense of urgency, especially when it comes to business. Especially when it comes to responding to a client request, whether that client’s request is overt or implied.How About You?What steps are YOU taking to maintain a sense of urgency in your life?",
      "url": " /blog/2024/12/06/sense-of-urgency/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-12-02-gratitude-partnership-achievement": {
      "title": "Gratitude, Partnership, &amp; Achievement",
      "content"	 : "  Adrian Diaz, Colby Fryar, and I spend a lot of time looking at deals. In the above video, we discuss some of the factors we consider before moving forward on a property.We review hundreds of deals together before we find one that we want to purchase. We’ve go through underwriting, touring, making offers, negotiating, disappointment, success, stability, and challenges.Building on StrengthsWhat an emotional roller coaster!Through it all, we have learned each others’ strengths and weaknesses. We are making the blend work.More Deals To ComeIf you want to be one of the first to know about our next deal, contact me and we’ll put you on our investor list.",
      "url": " /blog/2024/12/02/gratitude-partnership-achievement/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-11-21-bad-news-does-not-get-better-with-time": {
      "title": "Bad News Does Not Get Better With Time",
      "content"	 : "  When we face adversity, are we prepared to be honest with ourselves?When we are honest with ourselves and our fellow stakeholders, we can move forward and solve problems.Brotherly WisdomMy brother, Edward Hightower, is a remarkable business leader.Here’s what Edward likes to say about adversity: “Bad news does not get better with time.”When we face adversity, it can be very difficult to first confront the adversity ourselves, to share the adversity with our stakeholders, and then begin working on the problem. But until we do that, we don’t get to the point where we’re working on the problem.AccountabilityOne of the ways, one of the techniques that we can use to make sure we face adversity is to have partners who will hold us accountable. I am very fortunate to be working with Adrian Diaz and Colby Fryar. We hold each other accountable, and we stare adversity in the face together.Sometimes one of us is more optimistic than the other three and does not see the adversity, and the others will point that out to him.I must admit sometimes, many times, I’m the one that’s the most optimistic. Colby and Adrian will point that out to me. So then we can face the problem and deal with it. We can face the problem honestly, evaluate the alternatives, isolate whatever the core issue is, and then deal with it aggressively and fiercely.Others In Our CornerBottom Line: When facing adversity, sometimes we need other people in our corner that can call us on our BS so that we can deal with adversity fiercely and aggressively.Our honesty is enhanced and improved when we are collaborating with colleagues who will help us to recognize the adversity, help us to confront us, help us to brainstorm solutions and help us to execute.When a team operates on that level, it is very fulfilling. And more importantly, it is very effective.",
      "url": " /blog/2024/11/21/bad-news-does-not-get-better-with-time/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-11-05-matching-capital-with-opportunities": {
      "title": "Matching Capital With Opportunities",
      "content"	 : "  What is capital raising and why does it matter?Capital raising is all about taking capital and matching it with opportunities.IdeasEntrepreneurs usually have more ideas than they can ever execute in a lifetime. The best business leaders focus on a few ideas in order to achieve massive success.Making Capital GrowInvestors know that the right entrepreneur is in a great place to make money grow. Of course, it takes a ton of work to decide which deals to invest in, and which entrepreneurs to trust.Enter the capital raisers. When we as capital raisers do our jobs well, investors make money and entrepreneurs grow companies.Blending Ideas + CapitalIt’s very exciting to see how capitalism enables people with capital to come together with people who have opportunities. Together we do things that benefit everybody.Capitalism rocks!",
      "url": " /blog/2024/11/05/matching-capital-with-opportunities/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-10-31-listening-to-customers": {
      "title": "Listening to Customers",
      "content"	 : "  Kathy Jang is multifamily real estate investor with an amazing marketing background. She and I are partners on an apartment property in Phoenix AZ.Last week, we attended the Creighton Family Resource Center Fall Festival. We had a great time interacting with families in the area and sharing information about the services we offer to our residents.Advantages of ListeningBusiness leaders must observe and listen to customers. That way, we can anticipate their concerns and provide for their needs. When we meet the needs of our customers, they come back for more. And they tell their friends.Capitalism RocksBusiness owners like us are motivated to deliver outstanding results for customers. Everyone wins when that happens. That’s how capitalism works!",
      "url": " /blog/2024/10/31/listening-to-customers/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-10-22-partnership-work-ethic": {
      "title": "Partnership + Work Ethic",
      "content"	 : " Recently, my partners and I have been evaluating property management companies to handle the day-to-day operations of our assets.We are always searching for the best professionals to work with us as we deliver results for our investors.The above video (less than 3 minutes long) features two of my partners, Greg Butcher and Adrian Diaz, sharing thoughts about our process.",
      "url": " /blog/2024/10/22/partnership-work-ethic/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-10-04-what-is-cost-segregation": {
      "title": "What Is Cost Segregation?",
      "content"	 : "As the year 2024 draws to a close, smart investors are asking…  What is cost segregation?  What is the relationship between cost seg and bonus depreciation?  As an investor, how can you benefit from these concepts?Come and Hear!Come and join other investors for a webinar about cost seg and related topics.  Date: Wed, Oct 9, 2024  Time: 6pm Phoenix time  Register here.Our Presenter: Kim LochridgeKim Lochridge is Executive Vice President for Engineered Tax Services.Lochridge has personally invested in real estate since the 1990s. Kim possesses a powerful combination of real-world business management skills, with a fundamental understanding and practical application of tax codes as they relate to real estate, and energy efficiency incentives.Kim is a trusted advisor to Fortune 500 companies, high net worth individuals, ultra-high net worth individuals, single and multiple family offices, architects, engineers, and CPAs nationwide.Kim is also a frequent multi-national speaker in the tax, investment, private wealth, and family office spaces where she altruistically shares her expertise with others.",
      "url": " /blog/2024/10/04/what-is-cost-segregation/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-09-30-achieving-more-through-partnerships": {
      "title": "Achieving More Through Partnerships",
      "content"	 : " How does a team achieve greater success even in the midst of irksome obstacles and headwinds? Through partnerships.Arizona is a business-friendly state. And I’ve had the good fortune to meet and collaborate with some amazing partners on several multifamily deals.In particular, I would cite Adrian Diaz and Colby Fryar. The three of us have learned through experience that when each of us operates in his area of strength, the whole team achieves more.Sounds like something from Who Not How, doesn’t it?",
      "url": " /blog/2024/09/30/achieving-more-through-partnerships/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-09-23-asset-management-in-90-seconds": {
      "title": "Asset Management in 90 Seconds",
      "content"	 : " Last week, our partnership (Adrian Diaz, Colby Fryar, and Ray Hightower) spent a few hours with the property manager of our newest Tucson asset.Partnership and collaboration are keys to success in this business.This 90-sec video gives a quick overview of what we discussed.To our investors: Thank you for the trust you have placed in our team. We will always be good stewards over your capital.",
      "url": " /blog/2024/09/23/asset-management-in-90-seconds/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-08-31-recovery": {
      "title": "Recovery",
      "content"	 : " Yes, we work hard. And yes, it is important to avoid burning out.Sometimes we need to back away from work so that our brains and muscles can recover.If you want to read more about burnout and ways to recover from (and prevent) burnout, checkout this article from the Commit Action team: How To Recover from Burnout? 8-Step Plan for Entrepreneurs",
      "url": " /blog/2024/08/31/recovery/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-08-09-celebrating-capitalism": {
      "title": "Celebrating Capitalism",
      "content"	 : " During a recent trip to New York City, I was reminded of the virtues of capitalism.The above video was shot in New York’s Grand Central Station. This is always an exciting place to be. So many people going different places in this city. Some would argue this is the financial capital of the world. So many people here, so much excitement, so much economic activity.When people cooperate with each other under a system called capitalism, many good things happen.The ROIClear Podcast Celebrates CapitalismMany of you know that our ROIClear Podcast celebrates capitalism. And we salute our fellow business leaders through the ROIClear Podcast.When practiced well, capitalism delivers happy customers, dynamic careers, and abundant living for all.If you are a business leader who enjoys learning and celebrating capitalism with your peers, we invite you to subscribe to the ROIClear Podcast.See you there!",
      "url": " /blog/2024/08/09/celebrating-capitalism/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-07-06-opportunity-buffett-greed-vs-fear": {
      "title": "Warren Buffett on Greed vs Fear",
      "content"	 : "    Be greedy when others are fearful. Be fearful when others are greedy. -Warren BuffettThat’s not a quote about greed. It’s a quote about opportunity. In other words, jump on opportunities when they present themselves, even if other people don’t recognize them as such. As long as you’ve done your homework, as long as you’re making a rational decision based on sound business principles, jump!",
      "url": " /blog/2024/07/06/opportunity-buffett-greed-vs-fear/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-06-29-always-improving-our-properties": {
      "title": "Always Improving Our Properties",
      "content"	 : "  It’s always good when we make improvements to our properties.The ROIClear team is a buyer of multifamily investment properties. After we buy a property, we make improvements so we can give people a great place to live. Residents benefit directly from our work.Investors receive benefits as well: Capital preservation, tax advantages, and a solid return on investment.Everybody wins!",
      "url": " /blog/2024/06/29/always-improving-our-properties/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-06-21-the-road-less-stupid": {
      "title": "The Road Less Stupid",
      "content"	 : "  Smart people do dumb things. Here’s the proof: How much money would you have right now if I gave you the ability to unwind any three financial decisions you have ever made? Write that number down… seriously. – Keith Cunningham, AuthorThe Road Less StupidKudos to the author of The Road Less Stupid for the irreverent way that he launches chapter one. The title of the book will push some people away. After all, how many of us want to see our mistakes amplified in black and white?Fortunately, the author takes an unorthodox path. Rather than saying “Hey dummy, look what you did”, he says “hey… we’re all dummies. Now here’s what we can do to become less dumb.”The most effective advisors can admit their own flaws. Extra points for blending in a twist of humor.Get the Audio VersionSpecial thanks to Catherine Bell for recommending this book to me. Catherine pointed me to the audio version because the author’s ideas are best communicated with his personal tone-of-voice and inflection. True!About the AuthorThe author’s background is especially relevant in this case because he boldly tells business owners how to make smarter decisions. Naturally, the reader will ask “who are you and why should I listen to you?”Here’s some background.In the late 1980s, Keith Cunningham was wiped out when the real estate market collapsed in the Southwestern USA. Before the collapse, Keith and his associates considered themselves geniuses because they had earned millions just before the downturn. After the bust, they had zero cash, negative cash flow, and they had more debt than their assets were worth.Keith summarizes the experience on one of his metaphorical bumper stickers.  The best time to learn the lessons (and avoid the dreaded dumb tax) is prior to making the mistake in the first place.Pain is a powerful teacher. Even better, Keith chooses to share his lessons with other business owners.How the Book Fits TogetherEvery chapter of The Road Less Stupid can stand on its own. Now that I’ve finished the book, I like to skim the chapter titles to find an area where I need work. Maybe you’re like me when it comes to doing the right thing. I need reminders from time to time.Here’s a typical chapter format:  Overview chapter’s driving idea.  Real-world example of how the dumb tax might be avoided.  Quick summary of the main concept: “Here it is on a bumper sticker.”  Directions from the author: “Now go think. You’ll thank me later.”Not All Risks Are Created EqualThe chapter on risk (#36) has special meaning for me. As entrepreneurs, we can fall into the trap of romanticizing risk. Think about an instance when you took a business risk that worked out well for you. Were you smart? Or were you lucky?As business leaders, we prefer to think of ourselves as smart. Other people are lucky, right? When we evaluate the role of intelligence vs luck in our decision making, we need to be honest with ourselves.Chapter 36, Not All Risks Are Created Equal, contains a risk assessment tool designed to remove emotions (and egos) from our risk analysis. It starts with the author’s view that:  The key to avoiding losses is minimizing risk.  The prerequisite to minimizing risk is identifying and understand risk in all its forms.This chapter alone is worth the price of the book.ConclusionThe Road Less Stupid is an excellent book for the company leader who wants to avoid the Dumb Tax and grow their business(es) using strategy and intelligence, not luck. Highly recommended.",
      "url": " /blog/2024/06/21/the-road-less-stupid/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-05-31-risk-vs-optimism": {
      "title": "Risk vs Optimism",
      "content"	 : "  Markets can remain irrational longer than you can remain solvent. ~John Maynard KeynesWhat is risk, and why is the evaluation of risk important when investing? What is optimism, and why is optimism deadly when we are investing?Managing Investment RiskThoughts about risk are expressed in this 72-second video. Our ChoicesSince investing is risky, we have two choices:      We can run away from risk. Of course, the problem with running away is that we cut ourselves from potential upside.        We can evaluate the risk rationally. And decide (using business creativity) how to take steps that will mitigate the risks.  If you’re driving down a road and you see a pothole, you can turn around and avoid the road altogether. Or, if you’re a skillful driver, you can navigate around the pothole and minimize the impact on your journey.Which path do you prefer?",
      "url": " /blog/2024/05/31/risk-vs-optimism/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-05-24-major-milestone-achieved": {
      "title": "Major Milestone Achieved",
      "content"	 : "Our team achieved a major milestone this week. Those in the know are aware that we can’t share details via social media, yet. But if you have an existing relationship with any member of our team, reach out and we’ll talk.The TeamMultifamily investing is a team sport. Adrian Diaz, Colby Fryar, and I have learned how to leverage each others’ strengths to produce results. I am grateful to work with Colby and Adrian.About our team:  Based in Arizona.  We’ve known each other for a few years.  We began working together closely about a year and a half ago.  We have vanquished many obstacles together.  This week, we achieved a major milestone.  We plan to achieve more milestones through the rest of 2024.Helping CommunitiesWe buy multifamily properties, and we improve the properties so we can give people a great place to live. Our buy box:  75 units or larger.  Located in the Phoenix or Tucson MSAs in Arizona.  Class B or C.  Opportunity to add value through light renovations.Achieving TogetherOur track record is strong. If you are a broker or a seller of large multifamily properties, reach out to any member of our team.And let’s achieve milestones together!",
      "url": " /blog/2024/05/24/major-milestone-achieved/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-04-29-what-about-interest-rates": {
      "title": "What About Interest Rates?",
      "content"	 : "It is very difficult to predict interest rates. I would argue that it is impossible to predict the future of interest rates. So what should investors do in the face of future uncertainty?Here’s what to do. Don’t try to predict the future. PREPARE for the future instead.Preparation Beats PredictionTo prepare for interest rate ups &amp;amp; downs, our team underwrites conservatively. We give each deal a healthy buffer to ensure that the deal performs whether rates rise or fall. It’s not easy to do this.We end up walking away from many deals because they can’t handle the rigor of our approach.The good news: When we choose a deal this way, we know the deal is solid.What About You?Question: How do YOU deal with interest rate uncertainty? We invite you to share your thoughts via the Contact page. Let’s have a discussion!",
      "url": " /blog/2024/04/29/what-about-interest-rates/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-04-10-extreme-ownership": {
      "title": "Extreme Ownership - Lead and Win",
      "content"	 : "Extreme Ownership DefinedWhat is Extreme Ownership and why does it matter to a business leader?Extreme Ownership is a mindset practiced by the authors of the book by that name. Jocko Willink and Leif Babin served our country as Navy SEALs, elite warriors of the United States Navy.From the book’s introduction:  With Extreme Ownership, you must remove individual ego and personal agenda. It’s all about the mission. How can you best get your team to most effectively execute the plan in order to accomplish the mission? That is the question you have to ask yourself. That is what Extreme Ownership is all about.This post offers a one-page discussion about the book.People, Not RobotsThose of us who have not served in the military (including me) may be led to believe that military leaders have it easy because subordinates must follow orders blindly. Not true. U.S. Military Personnel are not robots. When a person chooses to enter the profession of arms, they are literally risking their lives for the mission. A person who accepts that level of risk must believe in the mission. That belief is communicated through effective leadership.The book Extreme Ownership pulls the reader into the theatre of war where battlefield challenges are described. Leadership principles are extracted from each battlefield situation. And then each principle is applied to business. This framework is repeated throughout the book:  Battlefield Experience  Principle  Application to BusinessDeath by PowerPointBefore reading Extreme Ownership, I did not know that military briefings were conducted via Microsoft PowerPoint. It makes sense. PowerPoint is an effective communication tool.At the same time, the book describes cases where military units were bogged down creating PowerPoint slides to satisfy bureaucrats. The same scenario happens in the business world! One evening at the combat operations post, the SEAL team was engaged in a PowerPoint marathon. They realized that the PowerPoint briefing document was getting in the way of mission execution.So they cut the number of slides and simplified the briefing by focusing on one principle. It’s less important for the brass to have every mission detail. And it is more important for the military personnel on the ground (SEALs, Sailors, Marines, and Soldiers) to know their role and how to contribute to the overall mission.Leaders and teams are more effective when everyone understands the broader mission objective, expressed as Commander’s Intent.Commander’s IntentIt has been said that the first casualty of any war is the battle plan. Why? Because a battle plan, no matter how well thought out, can never consider every contingency.Military commanders have learned that the Commander’s Intent must be communicated as part of any effective battle plan. Key questions to answer when sharing Commander’s Intent with the team:  Do the members of the team understand the broader mission?  Are the members of the team allowed to execute based on their understanding of the broader mission and standard operating procedures?Running a military unit based on Commander’s Intent takes a lot of planning and forethought. But it’s worth it. The payoff comes when the organization faces an unexpected obstacle. And then the team delivers results in unexpected ways.Train the team, communicate the Commander’s Intent, and enjoy the results of achievement.Front Echelon: From Battlefield to BoardroomThe authors of Extreme Ownership served our country for decades. Upon retirement from the SEAL teams, they decided to share their leadership lessons with the business world. Today they grow business leaders through their leadership development company, Front Echelon.In addition, author Jocko Willink teamed up with fellow martial artists to launch Victory MMA and Fitness in San Diego, CA.ConclusionWarfare is as old as human history. The best way to discourage an attacker is by being prepared to fight.Our military units fight on the battlefield. As company leaders, we join with our teams to battle against tough business challenges. The similarities are fascinating.",
      "url": " /blog/2024/04/10/extreme-ownership/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-02-27-raisefest-celebrates-capitalism": {
      "title": "RaiseFest Celebrates Capitalism",
      "content"	 : "Over 1,000 capital raisers attended RaiseFest in Phoenix last week. The event attracts fund managers, investors, and related professionals. We gathered for quality presentations, networking, and fun.RaiseFest is a celebration of capitalism. When good people conduct business, everybody wins.Panel: The Entrepreneurial Path Less TakenI was grateful to serve on a panel at this year’s RaiseFest. Our moderator, Carlos Salguero, posed excellent questions and kept the discussion moving. To my fellow panelists, Bryan Escudero, Madhavi Nade Jain, and Vasu Kakarlapudi: It was great serving with you, and I look forward to working with you again!GratitudeSo many people came together to make the event a success. Special thanks to the following:  Dr. Jennifer Harris and Jose Miller: Thanks for the photos!  Hunter Thompson: Thanks again for RaiseFest. Looking forward to next year!One More Thing…If you raised $1M or more in the past year, I invite you to contact our team about an opportunity that you might find attractive.",
      "url": " /blog/2024/02/27/raisefest-celebrates-capitalism/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-02-22-raisefest-teamwork": {
      "title": "RaiseFest + Teamwork",
      "content"	 : "Attention Capital RaisersHave you raised $1M+ in capital in the last twelve months?You might be a traditional co-sponsor. Or perhaps you are using the Fund of Funds model or an SPV to deliver for your investors. If so, this opportunity might fit you. And it’s right here in Arizona.  Contact us and you’ll hear from us quickly.  We might meet in person at RaiseFest ‘24!Deal + TeamAs a successful capital raiser, you understand business leadership and teamwork. You know that the best investors make decisions by looking at the deal and the team.These photos are from a recent 2-day DD in Arizona. Investors appreciate our track record, which includes:  1,700+ doors of multifamily ownership.  Acquisitions leadership for a $1.5B hedge fund.  25+ years of civil and structural engineering experience.  18+ years of military leadership experience.  20+ years of project management experience.  20+ years of construction company ownership.  18+ years of real estate brokerage + deal-making experience.  Multiple members with 20+ years in the tech industry.  21+ years starting &amp;amp; running technology companies, including successful exits.  Decades of experience in asset management and property management.  Multiple members with boots-on-the ground experience in the great State of Arizona.Next Steps for Capital RaisersWe have room for one or two capital raisers in our next deal. If this interests you, let’s talk. You can:  Contact us via this form, and you’ll hear from us quickly.  Approach one of us at RaiseFest in person.We look forward to speaking with you!",
      "url": " /blog/2024/02/22/raisefest-teamwork/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-02-13-prepare-for-rain": {
      "title": "Prepare for Rain",
      "content"	 : "Two farmers desperately needed rain.Both farmers prayed for rain. But only one actually prepared his field to receive the rain.Which farmer truly trusted God to send the rain?Answer: The farmer who prepared his field!Now, let us take a look at the businesses that you and I are building. What steps are we taking to prepare our fields today? Special thanks to Rod Khleif for recommending the movie “Facing the Giants”, the source of this clip.",
      "url": " /blog/2024/02/13/prepare-for-rain/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-01-29-roof-inspections-and-human-nature": {
      "title": "Roof Inspections and Human Nature",
      "content"	 : " Rooftop due diligence. Yes, it is important for us to inspect the roof of any asset that we’re buying. Even more important: We need to bring multiple experts on the journey with us. Experts who know exactly what they’re looking at.Why experts, plural? Here’s why.During a recent roof inspection, we were fortunate to have a multiple experts on-hand, each operating from a different viewpoint.      Some experts always recommend replacement because they’re in the business of replacing roofs.        Other experts give solid maintenance tips because they’re in the business of building relationships.  It is important to know what kind of expert we’re dealing with up front. And to make decisions accordingly.",
      "url": " /blog/2024/01/29/roof-inspections-and-human-nature/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-01-24-from-the-boiler-room": {
      "title": "From the Boiler Room",
      "content"	 : " Here’s a quick video from the boiler room of a property where we recently performed due diligence.A few folks have asked us: Why do you have so many people on-site for your due diligence walkthroughs?So Many InspectorsWhy do you have so many inspectors? So many specialists in electrical systems, plumbing, rooftops, concrete, etc? Why do you have people in the office reviewing every lease?Isn’t that overkill?Advantages of OverkillYes, IT IS OVER-KILL. We overkill-it when we perform due diligence because we want the clearest possible picture of an asset before we acquire it.Our overkill approach is in the best interest of our investors.When we study an asset deeply, we can learn everything we need to know to provide the best possible living experience for our residents. That makes our residents happy.Happy residents pay rent. And when rent gets paid, cash flows. Flowing cash makes our investors happy.Everybody wins.",
      "url": " /blog/2024/01/24/from-the-boiler-room/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2024-01-22-what-is-due-diligence": {
      "title": "What Is Due Diligence?",
      "content"	 : " What is due diligence?Due diligence the formal process that the ROIClear team goes through when inspecting a property before acquisition. Our investors trust us to thoroughly review all aspects of a property before we move forward. We always bring a big team on-site when we go through DD.Team members included:  Our core general partnership (GP) team.  Additional GPs who handle specialized areas of the acquisition and running of a property.  Members of the property management team that will run the property day-to-day.  Mechanical specialists, people who know HVAC and heating systems.  Plumbing and sewer specialists.  Electrical specialists.  Roofing specialists.You get the idea. We bring everyone on-site who can help us to gather data as we make decisions regarding how to move forward with the property.In the end, we enjoy going through the process. We buy multifamily properties and improve them, thereby giving our residents a great place to live.And we invite investors to benefit from our work. Investors receive capital preservation, tax advantages, and a solid return on investment.It feels great to build systems and teams that serve so many people at once. Truly a win/win adventure!",
      "url": " /blog/2024/01/22/what-is-due-diligence/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-11-08-forming-storming-norming-performing": {
      "title": "Forming, Storming, Norming, Performing",
      "content"	 : "A few decades ago, I was introduced to a framework that describes the growth and hiccups of teams. Every team goes through these four stages:      Forming. Earliest days for the new team.        Storming. First disagreement within the team.        Norming. Regrouping after the disagreement.        Performing. The team enjoys its first collective success.  Why?Why will a team go through these stages? Because teams consist of humans. Let’s explore this model further.FormingRight after the team launches, everyone is excited and happy to work together.You have experienced this euphoria before. You’ve joined a new team. The people are new, the computers are new, everything is new. We humans are mesmerized by things that are new.But newness wears off. And the frankness of reality remains.StormingAs the euphoria of Forming wears off, team members go through their first disagreement. Some members ask themselves “Why did I ever join these people?” and they quit the team. Others stick with the team, but their performance suffers because they’re disgruntled.Many teams die during the Storming stage. To make it to the next stage, the team must have a strong reason for being together in the first place.NormingThe team reaches Norming after they work through the disagreement of the previous stage. They decide that they want to work together after all.How does a team make it to Norming?To achieve Norming, the team needs a noble cause to rally around, or a formidable enemy to target. NASA had the moon mission as a noble cause during the 1960s. Noble causes can be better for team culture because of the good vibes that come along with the cause.PerformingPerforming is the dream stage for most teams. A team that consistently delivers great results is performing. A team that receives referrals from their best clients is performing.You will recognize the performing stage because team members have honestly assessed individual strengths and weaknesses and they know how each member fits within the greater &amp;amp; more powerful whole.Repeating CycleThe cycle repeats when the team faces a new challenge. If the team has made it through all four stages at least once, they’re better equipped to deal with Forming, Storming, Norming, and Performing in future cycles.The cycles are like a spiral staircase. The stages repeat, with each stage at a higher level than last time.ConclusionSo, what is the point of this article?  Teams go through these stages because teams are made of humans.  Teams will go through the four stages as they strive to produce results.  The stages cannot be avoided, they must be gone through.  The reward for making it through each stage is large. The reward for making it through all four stages is enormous.Much success to you and your teams!",
      "url": " /blog/2023/11/08/forming-storming-norming-performing/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-10-31-saying-yes": {
      "title": "Saying Yes",
      "content"	 : "Our company, ROIClear, buys multifamily apartment properties and improves them so that we can give people a great place to live. We are stewards over our investors’ money, and we say NO to a lot of deals. We sift through hundreds of deals before closing on one.And it makes us smile when we can finally say yes!Latest Deal in ArizonaOur latest deal is located in the great State of Arizona. We’re partnering with a firm that we’ve done two deals with before. This will be our third and largest deal. We will share details later this week. In the meantime, please join us as we celebrate the pleasure of saying YES!",
      "url": " /blog/2023/10/31/saying-yes/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-10-07-property-improvements-everybody-wins": {
      "title": "Property Improvements - Everybody Wins",
      "content"	 : " Something that excites me about the real estate business: It it possible to structure deals so that everybody wins.  Residents win when we buy a property and improve it. We’re giving them a great place to live.   Investors win because our improvements make it possible for the property to generate more income. The additional income is shared between our investors and our team.Wonderful things happen when we structure a deal in the right way!Sunday Morning Walk-ThroughWe shot the above video on a Sunday morning. I was walking through one of our properties, one of our first deals in the State of Arizona.Improvements MadeHere are some of the improvements we’ve made so far:      We replaced all the electrical panels. This makes the apartments safer for our residents, while reducing our insurance expense.        We have added French drains to the parking lot to improve water drainage. This prevents water from running against the building. Left unchecked, water can cause other damage.        Added washers and dryers inside of the units. This makes laundry more convenient.        Replaced the roofs on the buildings.  Every improvement gives our residents a better place to live. And that feels great!About the ROIClear TeamWe buy multi-family apartment properties, fix them up, and give people a great place to live. In the end our investors get capital preservation, tax advantages, and a solid return on investmentEverybody wins.",
      "url": " /blog/2023/10/07/property-improvements-everybody-wins/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-09-28-elon-musk-and-the-algorithm": {
      "title": "Elon Musk and the Algorithm",
      "content"	 : "  The only rules are the ones dictated by the laws of physics. Everything else is a recommendation. -Elon MuskWalter Isaacson has done a thorough job of documenting the business adventures of Elon Musk in his 2023 biography.Throughout the book, Isaacson refers to The Algorithm, a five-point checklist that Musk employs whenever he faces a tough business or engineering challenge. This post offers a brief discussion of The Algorithm.For a deeper examination, I encourage you to read Isaacson’s book.Why Does the Algorithm Matter?Business leaders know communication is a fundamental component of leadership. When the people we lead know exactly where we’re going, all ships sail in the same direction and greatness is achieved. The Algorithm gives Musk and his team a shared vocabulary for communication and an effective toolbox for solving problems.Musk created the Algorithm during a tough period in Tesla’s history. The company was scaling the manufacturing lines for the Tesla Model 3. The CEO literally slept on the factory floor during that time, rallying the troops and working the production lines with the hands-on builders of the car.Here are some reasons why the Algorithm matters:      It was born as a direct solution for real problems. It is not theoretical.        It gives every member of the team a clear and consistent way to solve problems. Excellent companies deliver clear and consistent results.        It gives everyone a consistent way to communicate about problems. Many of our toughest business challenges can only be solved through teamwork. Teams work best when members can speak with each other in a shared language.  The five points of the Algorithm appear below. Italicized items are direct quotes from Walter Isaacson’s biography of Elon Musk.Point 1: Question every requirement.Each [requirement] should come with the name of the person who made it. You should never accept that a requirement came from a department, such as from “the legal department” or “the safety department.” You need to know the name of the real person who made that requirement. Then you should question it, no matter how smart that person is. Requirements from smart people are the most dangerous, because people are less likely to question them. Always do so, even if the requirement came from [Musk]. Then make the requirements less dumb.During “production hell”, as Musk worked the assembly line for the Model 3, he observed that the battery pack contained an additional piece of plastic. He asked members of the battery team about the additional piece, and they said that the noise reduction engineers requested it. When he went to the noise reduction engineers, they remarked that the extra piece was no longer necessary, and they forgot to tell the battery team to delete it.People sometimes forget to communicate about outdated requirements. When we question the requirements, we can trim the fat.Point 2: Delete any part or process you can.You may have to add them back later. In fact, if you do not end up adding back at least 10% of them, then you didn’t delete enough.Members of Tesla’s solar roof installation team were demonstrating their installation procedure on a home owned by SpaceX. Musk observed that they were using two nails per solar tile. Musk wondered if they could speed up the installation process by using one nail instead of two. The installation engineers protested, but Musk insisted on one nail. And then he left the installation to handle other tasks nearby.As the installation team proceeded, they confirmed that the installation indeed required two nails, not one. So they resumed work with their original two-nail procedure. Musk returned to inspect the installation, and the team gave him the play-by-play of their experience with the failed one-nail procedure. Confronted with real-world experience, Musk walked back his original assertion and the team prevailed.The process continues to improve as the team removes unnecessary steps.Point 3: Simplify and optimize.This should come after step two. A common mistake is to simplify and optimize a part or a process that should not exist.A common mistake on teams: Optimizing a process that no longer needs to exist.Point 4: Accelerate cycle time.Every process can be speeded up. But only do this after you have followed the first three steps. In the Tesla factory, I mistakenly spent a lot of time accelerating processes that I later realized should have been deleted.This follows logically from Point 3, above.Point 5: Automate.That comes last. The big mistake in Nevada and at Fremont was that I began by trying to automate every step. We should have waited until all the requirements had been questioned, parts and processes deleted, and the bugs were shaken out.Automation can be viewed as acceleration on steroids. We should only spend time and money automating a process if it helps us to achieve a worthy goal.Corollaries to the Algorithm      All technical managers must have hands-on experience. For example, managers of software teams must spend at least 20% of their time coding. Solar roof managers must spend time on the roofs doing installations. Otherwise, they are like a cavalry leader who can’t ride a horse or a general who can’t use a sword.        Comradery is dangerous. It makes it hard for people to challenge each other’s work. There is a tendency to not want to throw a colleague under the bus. That needs to be avoided.        It’s OK to be wrong. Just don’t be confident and wrong.        Never ask your troops to do something you’re not willing to do.  ConclusionIt takes a high level of self-awareness to change one’s position when faced with new data. When we look at the results produced by Musk’s collection of companies, it appears that the leadership team has self-awareness in abundance.",
      "url": " /blog/2023/09/28/elon-musk-and-the-algorithm/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-09-11-distress-opportunity": {
      "title": "Distress + Opportunity",
      "content"	 : "  Be greedy when others are fearful.Be fearful when others are greedy.~Warren BuffettBuffett has lived by the above words for decades. He learned this approach from his mentor, Benjamin Graham.Distress Leads to OpportunityAnd now, those of us who invest in large multifamily properties will soon have a chance to apply the Buffett quote. The multifamily real estate market is showing early signs of distress. Fear and opportunity are in the air.Farmers who plow and plant their fields in preparation for rain can look to the approaching storm clouds in celebration, not fear.Signs of Distress?If you want further insights on today’s distressed market, check out this 24-minute video by James Eng. Eng leads a team of mortgage brokers at Old Capital, based in Texas. His presentation outlines the signs and the opportunities. Next StepsThe commercial/multifamily real estate business thrives on deals and dollars. We need properties to run, investors with capital, and lenders to round out the capital stack.If you’re a syndicator, now’s a great time to strengthen relationships with brokers, sellers, lenders… every person that you need on your team to get a deal done.If you’re a passive investor, take a good look at the syndicators that you’re dealing with. Which ones are in the best position to handle the upcoming storm?Opportunity is here. Those who execute wisely will thrive.",
      "url": " /blog/2023/09/11/distress-opportunity/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-08-31-why-ask-why": {
      "title": "Why Ask Why?",
      "content"	 : "Adrian Diaz is a highly successful real estate investor, entrepreneur, and business leader. During negotiations or due diligence discussions, Adrian poses penetrating questions to get to the root of any problem that our team might be facing.During a recent trip to Texas, Colby Fryar and I asked Adrian why he asks why.Adrian’s answer: It’s all about layers. When you ask why multiple times, you get to the root of the problem.It was a pleasure to capture Adrian in action in this 35-second video!",
      "url": " /blog/2023/08/31/why-ask-why/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-08-29-be-your-future-self-now": {
      "title": "Be Your Future Self Now",
      "content"	 : "  If you’re remarkable, it’s likely that some people won’t like you. That’s part of the definition of remarkable. Nobody gets unanimous praise—ever. Criticism comes to those who stand out. -Seth Godin1990s and the Future SelfIn the 1990s, a group of psychologists set out to challenge the prevailing dogma of their colleagues. These psychologists wanted to know, through their own research, what makes a person happy, healthy, and successful.The prevailing dogma held that that human happiness was the product of past experiences. Certain levels of past trauma could not be overcome, they believed.But the 1990s researchers discovered that human behaviors are not driven by our past experiences. Rather, we are pulled forward by our vision of the future.Psych Research + Actionable StepsThe book Be Your Future Self Now tells how we might leverage our vision of our future self to achieve bigger goals within a faster timeframe.The book’s author, Dr. Benjamin Hardy, is an organizational psychologist and an expert on the application of Future Self science. Regular readers of this blog will recognize his name. Hardy co-authored (with Dan Sullivan) three books that focus on business excellence: Who Not How, 10x is Easier than 2x, and The Gap and the Gain.Pulled Forward By Our future?What does it mean to be pulled forward by our future?Everything we do is driven by the future we envision for ourselves. When we can clearly see abundance in our future, we will take actions that produce abundance.However, if our vision of the future is clouded, we are less likely to take productive actions. Even worse, visions of a dismal future can cause us to engage in self-sabotage.Fortunately, humans can choose the future vision that we want for ourselves. We can choose a future of abundance by connecting with our high-achieving future self. Hardy’s book tells how.Yeah, Right. Prove It.The best way to test this theory is to try it yourself. This blog post will start you along that path. For a more complete prescription, read Be Your Future Self Now.From the book: Seven steps for becoming your future self are outlined below.1. Clarify Your Contextual PurposeDecide exactly what you want to accomplish. Set three core priorities and set a specific, measurable target for each priority. Clarity is energizing.2. Eliminate Lesser GoalsIn other words, un-commit to lesser goals. This step reminds me of points made in one of Hardy’s previous books, 10x is Easier than 2x. We achieve more when we focus only on those tasks that move us closer to the core priorities outlined in step one. Everything else should be ignored or delegated to someone else, an idea from Who Not How.3. Elevate from Needing to Wanting to KnowingAccept the truth of your Future Self and know that it is already yours. Once you eliminate lesser goals, know that you are on the path to achieving your vision.4. Ask for Exactly What You WantWhen enrolling others via the Who Not How strategy, ask for exactly what you want. Many people will tell you “no” at first. However, over time, more people will give you what you want because their desires will align with yours. Through practice you will become more adept at choosing the ideal people to ask and you will learn to state your requests with greater clarity.5. Automate and Systemize Your Future SelfOnce something works, find software to automate as much as possible.Example: Many years ago, I ran a user group for software developers in Chicago. My team and I assumed leadership of a 78-member group. By the time I handed the baton to the next leader, we had grown the group to over 4,000 members. Our growth was accelerated through automation. You can achieve this, too.6. Schedule Time Around Your Future SelfOne way to determine what you’re committed to: Look at how you spend your time. Therefore, be sure to schedule your time around the three core priorities in step one.7. Aggressively Complete Imperfect WorkYou’ve heard this saying before: Done is better than perfect. It is better to finish a task than to procrastinate when we can’t see a path to perfection. Don’t fall into that trap, especially if you’re producing a product for fellow humans.This trap reminds me of an observation offered by Amy Hoy, a user experience designer, product creator, and entrepreneur:  If you can help your customer kill a serious pain, they won’t care if the supporting details aren’t perfect. ~Amy HoyIt’s better to put a product in front of customers in rapid fashion. That’s the only way to gather useful feedback, the kind of feedback that can lead to massively successful products in the long run.ConclusionThis post can serve as a quick reference for those who have already read Be Your Future Self Now, or as encouragement for those who are planning to read  the book in the future. My recommendation: Read it. It’s well worth the investment of time.",
      "url": " /blog/2023/08/29/be-your-future-self-now/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-07-09-great-fun-and-great-danger": {
      "title": "Great Fun and Great Danger",
      "content"	 : "The waterfront area of any summer camp is a place of great fun and great danger.Commercial real estate investing is similar.Great Fun  Waterfront: Who doesn’t want to go out on a boat, enjoying the waves (on a lake) or the rapids (on a river)?  CRE: Who doesn’t want to invest in a CRE deal with solid ROI?Great Danger  Waterfront: Better wear your life vest. And you’d better know how to swim!  CRE: Better have strong underwriting skills on your team, along with asset managers and acquisitions specialists who know how to solve problems. And you’d better know how to navigate adversity and come out on top!Parallel LessonsThere are many parallels between waterfront safety and commercial real estate investing. I am grateful to the mentors who taught me so well, and I am grateful for the opportunity to pass lessons along to future generations.",
      "url": " /blog/2023/07/09/great-fun-and-great-danger/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-07-06-do-it-now": {
      "title": "Do It Now",
      "content"	 : "While reading Del Denney’s High Performance Playbook, I came to the section about his skydiving experience.“I always wanted to skydive”, I thought to myself.So I dropped the book, found a skydiving company, and made a reservation.Taking ActionOne week later, I jumped out of a perfectly good airplane (with a parachute and a guide).When my family saw the video, they thought I was nuts. All except for one cousin. She had jumped out of a plane a few years earlier. Maybe both of us are nuts!Do It NowWhat is something you’ve always wanted to do? Why not do it now! Examples:  I always wanted to start a company.  I always wanted to invest in real estate.  I always wanted to ask that girl (or guy) out on a date.  I always wanted to travel to Antarctica.You get the idea.Sense of UrgencyNow that you know what you want to do, take action. Put down your phone, close your laptop, and take the first step.For example: If you’re starting a company, call your first potential customer. Taking that first step will give you the momentum you need to take another.Take Action. Gain Momentum.Take action now and gain momentum. With momentum, we can move mountains.DO IT NOW!",
      "url": " /blog/2023/07/06/do-it-now/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-06-08-10x-is-easier-than-2x": {
      "title": "10x Is Easier Than 2x",
      "content"	 : "Our 10x performance journey begins with the rise of Michelangelo.At the age of  17, Michelangelo was an unknown artist obsessed with sculpting the human form as accurately as possible. To teach himself anatomy, he found and dissected dozens of human corpses. He literally risked his life to gain this knowledge; if the authorities had caught him “violating a corpse” he would have been put to death. Such was the law in Florence, Italy in 1493.Thankfully, Michelangelo was never caught.Applied Anatomy: 10xMichelangelo’s mastery of human anatomy shows in his art, including his sculptures of Hercules and David, his painting of the Sistine Chapel, and in the works of students who sought him out as a mentor.How did Michelangelo become such a remarkable artist? The authors of 10x is Easier Than 2x assert that he did so through the 10x process, although he would not have called it that at the time.Reviewing the 80/20 RuleIf you’re in business, you already know the 80/20 rule, also known as the Pareto Principle. Italian economist Wilfredo Pareto observed that 80% of the land in Italy was owned by 20% of the families. The rule shows up in other large statistical samples. On most sales teams, managers observe that 80% of the sales are closed by 20% of the salespeople. And so on.Many business leaders find that 80% of our results are due to 20% of our actions. By way of example: It’s usually more important to spend half an hour speaking face-to-face with a large client instead of spending an entire day sorting through files. The client conversation will likely lead to more revenue, while file sorting will only lead to a well-organized filing system.Yes, the files must be maintained! But a smart business leader will focus on revenue-generating tasks (like speaking with clients) and hire a team to manage the files.To achieve 10x, we focus on the 20% (producing 80% of the results) and we delegate or partner with people who can do the rest.2x is Typical, 10x is ExponentialTo achieve a 2x improvement in performance, most of us can just keep doing what we’re already doing. Over time, we’ll get better simply by doing the same thing repeatedly. Consider 10,000 Hours of Practice.But to achieve a 10x improvement, we must be mindful about the choices we make. To improve by a factor of ten, we need to focus on the 20% of our work at the intersection of excellence and passion. At the same time, we need to move away from the 80% of our tasks that can be better performed by someone else.The best business partnerships are those where each partner is focused on their own 20% with little or no overlap with their partner’s 20%, and each partner’s 80% is handled by other members of the team (including other partners).We know Michelangelo today because he chose 10x, even though he probably didn’t call it that. The authors site several examples of Michelangelo’s 10x activities:  Risking his life by learning anatomy from real human corpses, even though this activity was punishable by death.  Spending his entire savings on a block of marble because it happened to be suitable for his next project. The result: Hercules.  Accepting commissions from wealthy patrons before  he was entirely ready to perform the work, knowing that he had the determination and discipline to prepare himself in time for completion.How To Implement 10x in Our LivesNow that we understand the benefits of 10x, how do we implement it in our lives?Here’s the secret: It’s not enough to focus on the 20% one time. After we’ve chosen the 20% of tasks that need our attention, and once we’ve mastered that 20%, it’s time to implement the rule all over again. Begin focusing on 20% of the 20% (you already know what to do with the “new” 80%).The book contains examples of business leaders who achieve amazing results simply by implementing the 10x formula in a disciplined and consistent fashion.Getting Help With the 80%To make the process work, we need help from others who can implement the 80%. Sullivan and Hardy offer ideas on recruiting and retaining colleagues who can implement the 80% in two of their other books: Who Not How and The Gap and the Gain.Why is 10x Easier Than 2x?It seems counterintuitive, but the authors make a good case regarding why 10x is easier than 2x.It’s easier because each time we make a 10x leap, we are moving further into our area of giftedness. We spend more time doing the work we were born to do. The further we push into this niche, the less it feels like work.Further, as we get better at collaborating with our 80% partners, we get to watch them blossom as well. An 80% task for us will fall into another person’s 20%, and vice-versa.Collaboration in the spirit of 10x is a powerful path to travel.Conclusion10x is Easier Than 2x is a book that I will reference repeatedly over the years, in the same way that I re-read other books by this pair of authors. Highly recommended.For more info, check out 10xeasierbook.com.",
      "url": " /blog/2023/06/08/10x-is-easier-than-2x/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-05-11-mindful-landlord": {
      "title": "Mindful Landlord",
      "content"	 : "Terrie Schauer, author of Mindful Landlord, is a real estate investor and a world champion martial artist. Her skills include kick boxing and Brazilian Jiu Jitsu.The second edition of Mindful Landlord covers lessons learned during the Covid pandemic, a time when landlords (and everyone else) were faced with new challenges and seemingly insurmountable obstacles.Stuff We Know and Stuff We Don’t KnowMindful Landlord discusses concepts that most investors already know: How to find tenants, how to manage contractors, and the like. The book is unique because it challenges the reader to consider the Why behind the investments that we make. Why do we want to earn more money? Do we invest because we want more consumer goods, or do we want to spend more time connecting with our friends and families? What steps can we take (within ourselves) to keep from over-reacting in anger when an interaction with a tenant or vendor doesn’t go as planned? Mindful Landlord explores these questions in ways that I find helpful.Love vs. FearTo my knowledge, this is the only investment book that includes chapters on meditation, focusing on love over fear, or actively seeking the discomfort that comes with learning. How does an investor or business leader fail their way to success? This book tells how.ConclusionI recommend Mindful Landlord to any real estate investor, regardless of where they are on their journey.",
      "url": " /blog/2023/05/11/mindful-landlord/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-05-04-the-coffee-bean": {
      "title": "The Coffee Bean",
      "content"	 : "Are you a coffee bean?It’s possible to read the book The Coffee Bean in less than an hour. The second time you read it, it’s better to go slower while savoring the lessons and journaling along the way.Authors Jon Gordon and Damon West wrote The Coffee Bean as a fable. It describes the challenges faced by a young man as he navigates through life. At one point, our hero is approached by a mentor who shares the metaphor of the coffee bean.Boiling WaterImagine life as a pot of boiling water. Drop a carrot into the water, and what happens? In a few minutes, the carrot is softened by the water.Drop an egg into the boiling water. How does the egg respond? In time, the egg becomes hard.Finally, drop a coffee bean into the water. Boil the coffee bean long enough, and the coffee bean will transform the surrounding water into coffee.How Do We Respond?As intelligent humans with agency, we have choices in life.      We can allow our circumstances to beat us up and soften us, like a carrot in boiling water.        We can close ourselves off the world and become hard, like an egg in boiling water.        Or we can leverage our strengths and transform the world around us, like a coffee bean that transforms boiling water into coffee.  Are you a carrot, an egg, or a coffee bean?RecommendationI highly recommend that you read the book The Coffee Bean. Savor it like a hot cup of delicious coffee. You’ll be glad that you did.",
      "url": " /blog/2023/05/04/the-coffee-bean/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-04-29-how-to-handle-unexpected-events": {
      "title": "How to Handle Unexpected Events",
      "content"	 : "Here’s a test of business leadership: How does the team handle unexpected events?One of our properties in Nashville, Tennessee caught fire on last week. This is a 145-unit property with multiple buildings spread over a large plot of land. One building is completely gone.Fortunately, no people were hurt. Property and buildings can always be replaced. But human life is precious.GratitudeOur team is grateful for many things regarding this incident, including:      Zero loss of life.        Excellent third-party management. They were on the scene immediately, and they made temporary living arrangements for the displaced residents.        Smart systems and plans. Shout out to Rod Khleif and Scott Holmes of CREE Capital for their mentorship and systems. Insurance and safety systems on the property are solid thanks to their leadership.  Be PreparedUnexpected events are never easy. But when we prepare well, we can respond well. I am beyond grateful for a proactive team!",
      "url": " /blog/2023/04/29/how-to-handle-unexpected-events/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-04-18-saying-no": {
      "title": "Saying No",
      "content"	 : "Yes or No?Sometimes the best answer is NO.Our team at ROIClear sifts through scores of deals before making one offer. It is our mission to find the best balance between risk and ROI for our investors. If a deal falls short, we say NO. Over time, we say NO to a lot of potential offerings.  When We Say YesWhen we finally say YES, our investors enjoy:  Capital preservation.  Tax advantages.  Solid ROI.We take our mission seriously. And we are forever grateful for the trust that our investors place in us.",
      "url": " /blog/2023/04/18/saying-no/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-03-08-lessons-from-my-father": {
      "title": "Lessons From My Father",
      "content"	 : "Today is my father’s birthday. If Dad were still living, he would be 93 years old today. He passed away when I was eighteen, right at the point where I was viewing him more as a mentor than as a disciplinarian. I think of him often. I especially think of the lessons he taught my brother and me during his brief time on this planet.ObstaclesDad had a clear, no-nonsense way of dealing with obstacles. He would tell my brother and me that any obstacle can be dealt with. We just need to go over it, under it, around it, or through it. Simple and direct.Find OutDad did not accept “I don’t know” as an answer from his sons. His response to “I don’t know” was always “then find out.” This was before Google + the Internet, so finding out meant going to the encyclopedia or making a trip to the library. We had to find out.Back Up, Turn Around, and Go ForwardsDad was extremely practical. He never owned a brand-new car in his life, he always bought used cars. When my brother and I asked him why (repeatedly from childhood) he would say “What can a new car do for me that a used car can’t? All cars are the same. Any car you get, no matter how expensive will only do three things: Back up, turn around, and go forwards.”Always practical, to the end.Mom and Dad TogetherMom is excruciatingly humble! And yet she is a teacher of many lessons, even to this day. One day when I was in my mid-thirties and feeling full of myself, I told Mom that she had done a great job raising me.“I’m not done yet”, she quipped back. Always teaching, my mother is!Mom proof-reads most of the articles on my blog. She is extremely detail-oriented, and she catches every mistake in grammar or punctuation, no matter how small. I owe my writing skills to Mom.Mom, I love you, I appreciate you, and I am grateful that you are still raising me!ConclusionThis post started off as a tribute to my Dad. As I conclude, I think about all of the other adults that my parents interacted with during my childhood. This crew of parents watched out for each other’s children, took us on outings as a group (to give one or two sets of parents a break) and they lived the motto “It takes a village to raise one child.” I am grateful for my Mom and Dad, as well as my Godparents, teachers, Scout leaders, and all of the others who shaped me.I love you, Dad. And Happy Birthday!",
      "url": " /blog/2023/03/08/lessons-from-my-father/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-03-03-roiclear-is-for-business-leaders": {
      "title": "ROIClear is for Business Leaders",
      "content"	 : "  ROIClear is the video podcast for business leaders.The Meaning of the NameWhy did we choose the name ROIClear?  ROI because the return on investment is a key metric for any business leader.  Clear because it is important for us as business leaders to communicate clearly with the members of our team, investors, customers, vendors, and anyone else who is critical in the achievement of our goals.Visit ROIClear.com for business inspiration and ideas. We look forward to seeing you there!",
      "url": " /blog/2023/03/03/roiclear-is-for-business-leaders/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-02-15-investing-in-arizona-vs-california": {
      "title": "Investing in Arizona vs California",
      "content"	 : " Bridgetown Partners is a buyer of multifamily apartment properties. We buy the properties and we make improvements, thereby giving people a great place to live. Further, we invite investors to benefit from our work. Investors receive preservation of capital, tax advantages, and a solid return on investment.Early in our history, we considered investing in California. We quickly shifted our focus to Arizona instead. Why?Drivers of Investment DecisionsThree main drivers of solid investment decisions:  Job Growth. Do local employers need more people in order to achieve their business goals? Are new employers moving into the area, and are they hiring new people?  Income Growth. Are employees advancing in their careers, adding value to their employer’s business, and therefore earning higher salaries and wages?  Population Growth. Do people want to move to the area? Are they moving to enjoy better jobs, a better enivronment, or both?When our team sees these factors on the upswing, we know that we’re in an area of opportunity.Other StatesIn our research, we have uncovered other parts of the country with strong growth in jobs, income, and population. Bridgetown is currently targeting these markets:  Arizona (Phoenix, Tucson, Sierra Vista)  Tennessee (Nashville MSA)  Texas (Cameron County, especially areas close to Brownsville and Boca Chica)If you would like to know more about our investment thesis, feel free to contact us. Our team would be glad to speak with you.",
      "url": " /blog/2023/02/15/investing-in-arizona-vs-california/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-02-09-deal-with-cancer-proactively-and-aggressively": {
      "title": "Deal With Cancer Proactively and Aggressively",
      "content"	 : "Few things are scarier than cancer. When one adds the element of uncertainty, as in “that tumor might be cancerous, we’re not 100% sure”, the emotion of fear is amplified. Let me explain.Big Tumor With Zero SymptomsIn mid 2022, my primary care physicians reviewed the results of a recent blood test. Everything looked normal except for one line item called creatinine. A normal creatinine level should fall below 1.4 milligrams per deciliter. Mine was 1.5 mg/dL, slightly above the recommended maximum. My physicians were concerned, so they referred me to a kidney specialist. The kidney specialist ordered an MRI, which revealed a large, baseball-sized mass on my right kidney.Creatinine vs CreatineFrom what I’ve learned, creatinine and creatine are similar in spelling and related to human metabolism. I do not fully understand the relationship. That discussion is beyond the scope of this post.Gathering Many OpinionsI spent the last four months of 2022 speaking with multiple kidney specialists in and around Phoenix. Six opinions in all. Every specialist recommended the same strategy for dealing with this threat: Radical nephrectomy. Removing the kidney and the tumor all at once.By nature, I ask tons of questions and I am thankful to all of the specialists for giving me answers. One specialist was an especially clear communicator. All of the others talked about “a growth on my kidney”, but this specialist was the first to use the words “tumor” and “cancer” in reference to my case.When I asked him to elaborate, he said, “We won’t know for certain that it’s cancer until we remove it. However, every time I’ve seen something like this in the past, it turned out to be cancer.”It is refreshing to deal with someone who speaks in clear, direct language. When we have clarity around an issue, we can deal with it directly and aggressively.That clear-language specialist was part of the team that I chose to perform my kidney surgery. That team of physicians, PAs, nurses, and support members did an amazing job. I am forever grateful to them.Kidney in a Jar?Some of you will think I’m nuts for this request: I asked the team to preserve my kidney in a jar so that I could sit it on my desk as a reminder of my mortality. Cool sourvenir, right? Nope. Turns out that the surgical team needed to send the kidney/tumor to the pathology department to test for cancer. This process involves cutting the mass into thin slices  (like bologna) and carefully inspecting the slices.On the morning of Jan 31, 2023, the surgical team removed my right kidney along with the attached baseball-sized tumor. I spent the night in the hospital and returned home on Feb 1, 2023.The surgical team sent my kidney + tumor to the pathology department for analysis. Key findings from the pathology report:  The news: The tumor was cancerous.  The good news: The cancer was contained within the tumor. No spreading beyond the kidney or to other parts of my body.Bottom line: We caught the cancer in time. Praise God for medical science and for the men and women who practice this art.Overflowing With GratitudeMy brother travelled to Phoenix to be with me during and after my surgery. I got a little choked up while typing that last sentence. My cousins here in Arizona were here for me. My friends from Connecticut, Washington, and Illinois flew to Arizona to care for their friend. While I spoke to one friend by phone to give him news of the diagnosis, he sent a text message to his pastor and the entire congregation prayed for me in that instant.  Friends and business partners in Arizona, Tennessee, California, and Texas are rallying around to keep my spirits up and to encourage me through this journey.What is love? What is friendship? My definitions for both words are vastly expanded now that I’ve been through this experience.Human Intelligence + Robotic Motor SkillsNine days ago I was spread out on an operating table while a Davinci Surgical Robot pressed medical instruments into my open belly. The nephrectomy required decades of human medical intelligence blended with the microscopic motor skills of a robot. What a winning combination!Nine days later, I am walking around Arizona with a robust appetite and a heart full of gratitude.Serious Recommendation for YouI am not a medical professional and I am not qualified to give medical advice. I only offer this recommendation: Get your creatinine level checked.Without the creatinine test, I never would have known about the mass on my kidney. And it was the size of a baseball. I had zero discomfort and zero physical symptoms right up to the morning of my surgery. Here’s the data that my physicians gathered to make the surgery recommendation:  The high creatinine level told my physicians that something was wrong.  The MRI showed the abnormal baseball-shaped growth on my right kidney.Bottom line: Get the bloodwork done, and have the results interpreted by specialists in each area of concern.Next StepsMy physicians have advised me to walk as part of my recovery, so I walk at least two miles every day. After the 4-week recovery period, I will begin training for distance races this year. My plan is to complete the following distance races in this order in 2023:  5k  10k  Half Marathon  Full MarathonYes, I will complete another marathon in 2023. Perhaps you and I will run together!",
      "url": " /blog/2023/02/09/deal-with-cancer-proactively-and-aggressively/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2023-01-24-the-power-of-partnership": {
      "title": "The Power of Partnership",
      "content"	 : "  I moved Bridgetown Partners to the State of Arizona in October of 2020. During the pandemic, before the vaccines. Four months later, we closed our first investment in the State: 93 units in Tucson.We did this with partners. We’ve formed wonderful relationships with mentors and partners in the states where we operate. Collaborating with partners is a powerful way to achieve any goal.Deal HistoryAs of this writing, we’ve closed the following deals:  93 units in Tucson, AZ  302 units in Phoenix, AZ  28 units in Phoenix, AZ  146 units in Sierra Vista, AZPartnerships enable each member of the team to focus on our respective strengths. Two companies coming together, with complementary strengths, can achieve exponentially more than either of them should accomplish alone.Partnerships and YouHow about you? What partnerships have worked well in your career?",
      "url": " /blog/2023/01/24/the-power-of-partnership/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-12-28-keeping-our-heads": {
      "title": "Keeping Our Heads",
      "content"	 : "  If you can keep your head when all about you are losing theirs and blaming it on you… ~From the poem “If” by Rudyard KiplingHot TempersI’m at O’Hare Airport, headed home to Arizona after getting caught by this season’s travel chaos. I like to fly Southwest Airlines. Two days ago, the airline cancelled over 75% of its flights due to inclement weather and a glitch in their scheduling system. The lines were long and some tempers got hot.Southwest Airlines Employees: ProfessionalYet through it all, the Southwest employees who I interacted with kept their heads. They worked on the problem. They shared information as it became available to them.Yes, my departure from Chicago was delayed by two days. But in that delay, I was able to spend more time with my family and friends in Chicago. And since most of my work is remote, there was minimal impact on my business. What a blessing!I do not have a complete picture of the cause of the travel problems this week. Still, I must take my hat off to the Southwest employees for the way they are handling a tough problem.Happy New YearHappy New Year to all of you!",
      "url": " /blog/2022/12/28/keeping-our-heads/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-12-06-artificial-intelligence-and-commercial-real-estate": {
      "title": "Artificial Intelligence and Commercial Real Estate",
      "content"	 : "Introducting ChatGPTArtificial Intelligence wrote this blog post. Everything except this brief introduction.An AI tool called ChatGPT (Generative Pre-trained Transformer) composed the post in response to this request from me:  Write a blog post on multifamily investments and bonus depreciation.End of intro. The AI-generated article appears below. Click the image to enlarge.Content from ChatGPT: Artificial IntelligenceIf you’re a savvy real estate investor, you may be aware of the recent tax law that allows for bonus depreciation on certain types of real estate investments. This can be a great way to offset some of the costs of your investments and improve your bottom line. In this article, we’ll explore the world of multifamily real estate investments and how bonus depreciation can be a valuable tool in growing your wealth.First, let’s talk about what multifamily properties are and why they can be a great investment. These properties consist of multiple units that are rented out to tenants, and they can generate a steady stream of income for their owners. Because of their potential for long-term wealth generation, multifamily properties are a popular choice among real estate investors.Now, let’s talk about bonus depreciation. This is a tax law that allows investors to claim a higher depreciation deduction on certain types of property in the year it is purchased. This can be a huge benefit for real estate investors, as it can offset some of the costs of the investment and improve their bottom line.So how can you take advantage of bonus depreciation on your multifamily investments? First, it’s important to understand which types of property qualify for bonus depreciation. Generally speaking, the property must be new or newly renovated, and it must be used for business purposes. This means that if you’re purchasing an older multifamily property and renovating it, you may be able to claim bonus depreciation on some of the renovations.Once you’ve identified a property that qualifies for bonus depreciation, the next step is to work with your tax professional to determine how much of the cost you can claim. This will depend on a number of factors, including the type of property and the extent of the renovations.In conclusion, multifamily real estate investments can be a great way to generate long-term wealth, and bonus depreciation can be a valuable tool in offsetting some of the costs of your investment. By working with a tax professional, you can determine how to take advantage of this tax law and maximize the benefits of your real estate investments.",
      "url": " /blog/2022/12/06/artificial-intelligence-and-commercial-real-estate/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-11-14-solving-the-upper-limit-problem": {
      "title": "Solving the Upper Limit Problem",
      "content"	 : "What is stopping you from operating in your Zone of Genius? In his book The Big Leap, author Gay Hendricks identifies “The Upper Limit Problem” as the one obstacle blocking a person from achieving greatness. Hendricks divides human performance into four zones: Genius, Excellence, Competence, and Incompetence. His book inspired me to create this graphic:The Upper Limit Problem can keep a person stuck in one of the comfort zones, never to achieve genius.Now that we’ve outlined the problem, how can high achievers break through and achieve their potential?ULP: Youthful DefinitionHendricks holds a PhD in psychology. He has studied human behavior for decades. He openly discusses his observations with his family, including the youngest members. His 12-year-old granddaughter explains the upper limit problem in these words:  If you don’t know it’s OK to feel good and have a good time, you’ll do something to mess up when things are going well.Brief and clear. One could say that the upper limit problem is a form of self-sabotage.Internal ThermostatHendricks has observed that we humans are equipped with an internal “thermostat” that sets an upper limit on our performance. When we produce better results than we believe we deserve, the thermostat kicks in and we engage in self-sabotage. We pull our performance back down to the “acceptable” level set by the thermostat. The thermostat controls our performance.For most of us, the thermostat level was set in early childhood, long before we learned to think for ourselves. Teachers, parents, kids on the schoolyard, authority figures, co-workers, peers… all have a role in setting our early thermostat. Most of us live with that initial (limited) setting for the rest of our lives.Fortunately, once we know that the thermostat exists, we can take action.Humanity’s Upper LimitOnce Hendricks discovered a pattern for  the upper limit problem, he began to see its manifestations everywhere. We can even see the upper limit problem played out on a global scale. For example:  Humans enjoy a period of peace and then plunge into a war.  Humans create a time of economic expansion, then we go into a recession or depression.Back and forth, back and forth. Any time we reach a high performance level, we pull ourselves back to an “acceptable” level. To paraphrase Hendricks’ granddaughter, we have a limited tolerance for feeling good, so we do something to mess it up.Why We Have an Upper Limit  Many of our fears are based on the workings of the ego, the part of us that’s focused on getting recognition and protecting us from social ostracism. ~From The Big LeapWhy do humans have an Upper Limit Problem in the first place, and how does having an upper limit serve us?Having an upper limit prevents us from straying too far away from the larger group of humans. Throughout human history, we have relied on group strength for our survival.Of all the living creatures on Planet Earth, humans are not the fastest or the strongest. But we are the best at cooperating via communication. We’re the best at working together in groups. Even in the present day, each of us depends on the group for our survival. We depend on each other for food, shelter, medical care, and protection from outside dangers.What happens to a human who separates from the group? For our earliest ancestors, separation meant death. Therefore, we’ve evolved to value group cohesion. Sticking with the group is literally a matter of life or death.Group cohesion is driven by our desire to survive. Therefore, when we try to achieve beyond (outside of) the group, the internal voice of fear (Upper Limit Problem) prods us to get back in line. To get back to the comfort zone, where it’s safe.Examples of ULP Management SuccessHendricks cites some examples of people who successfully identified their upper limit problem. They learned how to conquer it and thereby operate within their Zone of Genius.  Dr Robert Jordan. Jordan had the opportunity to sell his company for a large financial gain, and then blew up the deal over a minor issue that turned into a big argument. Jordan recognized that his upper limit problem had kicked in, causing him to self-sabotage the deal. After that loss, he learned to manage his upper limit problem by asking himself two questions:          How much love and abundance am I willing to allow?      How am I getting in my own way?        Kenny Loggins, musician. Hendricks has served as on-the-road coach for Loggins and his band. Loggins’ upper limit problem showed itself every time he had a hit record or won a Grammy. After every success, he would get sick, ruin a relationship, or perform some other act of self-sabotage. Loggins’ initially isolated his upper limit problem through meditation. This led to a new level of performance within his Zone of Genius.Not “One and Done”Note that solving the Upper Limit Problem is not a “one and done” action. Every day, the Upper Limit Problem will strive to pull us back in line, to pull us back within the larger group of humans. As high achievers, it’s up to us to recognize the ULP and deal with it. Every day.Conclusion + Next StepsOne final point. Hendricks observes that the more a person achieves, the more urgent it is for them to identify and overcome their Upper Limit Problem. Your fellow humans are waiting for you to operate in your Zone of Genius; everyone benefits when you do.Now that you’ve read this discussion of the Upper Limit Problem, I encourage you to read the book The Big Leap. The author describes the problem in greater detail, and he offers some solutions that might serve you well.",
      "url": " /blog/2022/11/14/solving-the-upper-limit-problem/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-11-03-job-growth-drives-multifamily-value": {
      "title": "Job Growth Drives Multifamily Value",
      "content"	 : "My partners and I are buyers of multifamily apartment properties.How do we decide where to buy? We look at three key factors: Job growth, income growth, and population growth.Job growth is the most important of the three. Job growth is a leading predictor of  investment growth. When we buy in areas of job growth, we find a steady supply of rent-paying residents.Everybody wins when we invest:  Residents get a great place to live.  Our investors get preservation of capital, tax advantages, and a solid return on investment.To learn more, visit BridgetownPartners.com.",
      "url": " /blog/2022/11/03/job-growth-drives-multifamily-value/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-10-14-improving-our-assets": {
      "title": "Improving Our Assets",
      "content"	 : "It feels good to make improvements that contribute to the safety of our residents. In the above 90-second video, we talk about the improved electrical panels that we installed at one of our properties.Everyone Wins: Residents, Investors, &amp;amp; BridgetownEveryone wins when we make an improvement like this:  Residents win, because they now have a safer place to live.  Investors win, because improved safety drives lower insurance premiums. And lower expenses yield higher ROI.  My partners and I win, because it’s always good to make changes that benefit residents and investors.Thanks for watching this brief clip!",
      "url": " /blog/2022/10/14/improving-our-assets/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-09-29-achieve-more-measure-the-gain": {
      "title": "To Achieve More, Measure the Gain",
      "content"	 : "High-achieving humans are consistently striving for the next goal. And we tend to beat ourselves up over goals we’ve missed instead of celebrating the goals we’ve accomplished.If you’re reading this post, you’re probably a high-achieving human. And you may have some experience with self-flagellation. Question for you: If beating yourself up was the path to success, wouldn’t you be perfect by now? The Gap and the Gain, authored by Dan Sullivan and Dr. Benjamin Hardy, offers a better way.The Gap and the GainSullivan and Hardy offer powerful arguments for focusing on our gains instead of our gaps. They have packaged their findings in The Gap and the Gain.This post will summarize a few lessons from the book:  Making the Boat Go Faster.  Mental Subtraction.  The 5-Minute Rule.I encourage you to read the entire book.DefinitionsAs you can see from the graphic at the top of this article, the Gap is that space between our current state and the ideal state we’re striving to achieve. Of course, the ideal state is a moving target because humans are wired to strive for more. The gap grows larger every day, and it’s difficult to measure because it happens in the future. The growing gap is a source of ever-increasing frustration for high achievers.While the Gap is all about the (possible) future, the Gain covers items we’ve achieved so far. The Gain is concrete and measurable because we have already done it. The Gain is an ever-growing list of achievements that we can be proud of.Resting on Laurels? Nope.When I first read The Gap and the Gain, and when I understood the concept of focusing on the Gain, I recalled a warning from my father many decades ago. Dad warned me against resting on my laurels.But focusing on the Gain is not about resting on one’s laurels. Measuring and focusing on the Gain is a way to give ourselves energy so that we have the courage and focus to keep achieving.The core concept of focusing on the GAIN was discovered through real-world experience with over 20,000 entrepreneurs. This is not theoretical. The authors gathered data by observing active, high-achieving entrepreneurs.Making the Boat Go Faster  When performance is measured, performance improves. When performance is measured and reported back, the rate of improvement accelerates.~Pearson’s LawThe British Rowing Team faced the 2000 Olympics knowing that they had not won a gold medal since 1912. At that point, team leadership developed a one-question filter for all training activities.  Will it make the boat go faster?This single question served as a measuring stick for every training activity, every decision. Asking “Will the boat go faster?” kept the team focused when others might go off track. Examples:      You’re invited to a party on the night before training. Will it make the boat go faster? If the answer is “no”, then you don’t go to the party.        You’re tempted to eat a meal heavy in sweets. Ask yourself: Will it make the boat go faster? If the answer is no, you skip the sweets in favor of something healthier.  Lesson from the rowers: Determine your criteria for success (like making the boat go faster) and get very good at saying “No” to anything that doesn’t contribute to success.How might you compose a filtering question for your business decisions?Mental SubtractionYou’ve probably seen It’s a Wonderful Life, the 1946 film by Frank Capra. In the movie, an angel shows the protagonist, George Bailey, what the world would have been like if he had never been born. Seeing the world without his presence gives George an appreciation for the precious nature of life.We can conduct our own George Baily exercise through mental subtraction, thinking of the absence of the good things in our lives. Imagining the absence of a positive event in our lives is more powerful than simply looking back on the event. In the words of the authors, “Mentally subtracting a material possession you’ve previously enjoyed increases your happiness with that item more than simply thinking back on when you purchased it.”We feel a deeper appreciation for the Gain when we imagine what life would have been like without it.The 5-Minute RuleIf you must be in the Gap, give yourself five minutes and then move on.In an example from the book, a college soccer coach was placed in charge of a team of rookie soccer players. Since the players were new, the coach decided to focus their attention on two skills.  Mindset.  Endurance, the ability to run.The team of rookies lost several games in the beginning. And that’s when the coach introduced the five-minute rule. If they lost a game, the players were allowed to be down in dumps for five minutes, and then they had to move on.The coach even used a 5-minute timer.After the 5-minute alarm went off, the coach would set a 10-minute timer. For the next ten minutes, players were required to talk about the good things that happened during the game.After the 10-minute alarm sounded, the coach set a 20-minute timer. During the 20-minute session, players were asked to point out the good things done by individual players during the game.Once the players learned to stay focused on the items they could control (mindset and endurance), they began to win.ConclusionThe Gap and the Gain is not a book that I can read once and put down. I find myself referring to it over time. I’m grateful for the friend who recommended it to me. Applying mental subtraction: Imagine what my life would have been like if I had never met that friend!",
      "url": " /blog/2022/09/29/achieve-more-measure-the-gain/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-08-11-using-stories-to-build-your-business": {
      "title": "Using Stories to Build Your Business",
      "content"	 : "  Your customer should be the hero of the story, not your brand. This is the secret every phenomenally successful business understands.~Donald Miller, AuthorWe humans can easily remember stories at a great level of detail, while a ten-bullet list from a PowerPoint presentation is immediately forgotten. Stories are memorable and they induce strong emotions, and that’s why many successful companies use stories when wooing customers.Now… What kinds of stories are most effective?SB7 FrameworkIn the book Building a Story Brand, Donald Miller gives business owners a process for crafting effective stories. He calls the process The StoryBrand 7-Part Framework (SB7).One point of the framework: Customers aren’t looking for a hero to rescue them. Customers are attracted to stories where they play the role of the hero, and they want to demonstrate power by rescuing themselves.Whether they know it or not, the customer wants a guide who can counsel them into becoming a better hero.For example, in the Star Wars movies, Luke Skywalker is the hero. To fully develop his heroism, Luke needed a guide, Obi Wan Kenobi, to point him along the correct path. The “hero needs a guide” theme is repeated in our favorite movies because it is a core component of human existence. Other examples:  Michael Corleone needed his father, Vito Corleone.  King T’Challa needed his father, King T’Chaka.And so on.The Role of the Business Owner  StoryBrand Principle One: The customer is the hero, not your brand.~Donald MillerIf the customer is the hero of the story, what role do we play as business owners?The business owner is the guide. We guide the hero along the path (in the form of our product or service) that enables the hero (the customer) to fully develop their heroic skills.Further StepsBuilding a Story Brand describes other points of the SB7 Framework in detail, while offering advice on using SB7 to grow our businesses. The book is well worth the reading time.",
      "url": " /blog/2022/08/11/using-stories-to-build-your-business/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-07-27-keeping-investors-informed": {
      "title": "Keeping Investors Informed",
      "content"	 : "Yesterday afternoon, my partners and I recorded a webinar for the benefit of our investors. We reported on the physical and financial condition of the property, and we shared our plans for moving forward. We shared good news, bad news, and so-so news. Our investors trust us because we treat their hard-earned money as if it were our own. And they know we’ll always keep them informed.It feels good to be trusted.Our team has another deal in the pipeline, and we will be accepting investors soon. Located in Nashville, Tennessee, 140+ units, an attractive asset that needs some professional care. Just right for our asset management team. My partners and I (and our contractors) have walked the property, examined the financials, and shopped the competition. We have a solid business plan for turning the property around.When we turn a property around, everybody wins.If you would like to know more about the deal, reach out via the contact page, email, or phone. We look forward to working with you.",
      "url": " /blog/2022/07/27/keeping-investors-informed/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-07-20-spacex-in-texas": {
      "title": "SpaceX in Texas",
      "content"	 : "The above photo shows the SpaceX facility in Boca Chica, Texas. While walking the grounds, I was reminded of a question my mother once asked me. “Raymond, do you want to go to space?”My response: “Yes.”Conditions for Space TravelOf course, my “yes” comes with conditions:  I won’t go first. My space vehicle must be successfully tested by other humans before I hop on board.  I will go with a team. My biggest triumphs in life have come as part of a cohesive team.  I will have a role that fits my skills and strengths.  The team and I will have a solid plan for departure and return. I still have family and friends here on Planet Earth, and I enjoy their company.  Our team will rehearse the plan over &amp;amp; over.  As we rehearse the plan for departure &amp;amp; return, our team will learn from our mistakes and continuously improve our skills.The above conditions will improve our odds of success while reducing failure to a tiny footnote.Space Travel and InvestingInvesting is similar. Running a business is similar. I’ve done both for decades.My team at ROIClear treats investing with the care and attention of a space mission. For the space mission, the safety of the crew is paramount. For our investors, the safety of your hard-earned capital is paramount. Planning is key. Returning home safely is the driving objective.Plus, our investment vehicles offer handsome returns and tax benefits. You don’t get those in space!Let’s Take the VoyageIf you like our approach, reach out via the Contact Form. Let’s take the voyage together.  I look forward to hearing from you.",
      "url": " /blog/2022/07/20/spacex-in-texas/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-07-14-apartment-acquisitions": {
      "title": "Apartment Acquisitions",
      "content"	 : "When I’m not jumping out of airplanes, you’ll likely find me touring an apartment property or running numbers for a potential investment.I lead a company called Bridgetown Partners. At Bridgetown, we buy apartment properties, fix them up, and give people a great place to live. Here’s why residents and investors enjoy our work…      Residents choose our properties because we make improvements and we manage our properties well. Everyone wants to be proud of the place they call home.        Investors choose Bridgetown because we offer a steady, predictable return on investment. We communicate well. And the tax benefits are great, too!  We cater to business owners and high net worth individuals who are looking for a steady, reliable place to invest capital.Due DiligenceToday I was in Nashville, Tennessee touring a 140-unit apartment community with a group of fellow investors. We’ve built a community of trust, and many times we invest together. We advise each other, and we learn together.Before Bridgetown places our investors’ money in an asset, we examine the property thoroughly. We bring in experts to evaluate the useful life of building systems as well as market potential. A typical Bridgetown due diligence cycle will include experts in areas such as:  Plumbing. Are the pipes sufficiently robust to support the needs of the residents?  Electrical systems. Will the current configuration support upgrades such as in-unit washer/dryer installation?  Roofing. How much longer will the roof last?  Market dynamics. What improvements must we add to property to ensure the highest possible return on investment.  Accounting. What are the latest tax laws, and how can we leverage these laws to minimize taxes?  Legal. How do we structure each deal so that everybody wins? When everybody wins, each party wants to do more deals, and that leads to more opportunities for winning.Bridgetown is a dependable steward of our investors’ hard-earned capital.Next StepsIf you are an investor looking for a steady, reliable place to park your capital, let’s talk.  You can book a call via Calendly, or reach out through the contact form. I look forward to speaking with you.",
      "url": " /blog/2022/07/14/apartment-acquisitions/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-06-30-high-performance-playbook": {
      "title": "Ikigai and the High Performance Playbook",
      "content"	 : "Del Denney is a performance coach who helps business leaders, athletes, and other professionals to achieve better results. Most of his coaching sessions are conducted one-to-one or in small groups. I am one of Del’s clients, and his expertise has enabled me to increase my performance in the time since we met.When I learned that Del was writing a book, I was excited because books are a great way for coaches to offer their thoughts to a wider audience. This article will discuss one of the concepts covered in Del’s High Performance Playbook, the Japanese philosophy of Ikigai.What is Ikigai?The literal translation for Ikigai is “reason for being”. We might think of it as one’s purpose. The Ikigai philosophy comes from the Okinawan Islands in the nation of Japan. People in Okinawa have an average lifespan of 84 years, longer than most places on planet Earth. Many Okinawans consider Ikigai to be a contributing factor in their long lifespan.Four QuestionsYour answers to four fundamental questions will define your Ikigai:  What do you love?  What are you good at?  What can you get paid for?  What does the world need?The Venn diagram at the top of this post gives a visual representation of the questions, and Ikigai lies at the intersection of the four questions. The Ikigai diagram might remind you of the Hedgehog Concept from the book Good to Great. Ikigai certainly came first!Profession, Mission, Passion, and VocationDigging further into the philosophy and the diagram, here’s how the four questions are related:            Your…      is determined by these intersections.              Profession      What you’re good at and what you get paid for.              Mission      What the world needs and what you love.              Passion      What you love and what you are good at.              Vocation      What the world needs and what you can be paid for.      Next StepsIkigai is only one of the concepts described in the book. The remainder of the book offers advice on how to take action. Readers will learn how to move forward in the face of fear, how to deal with the small voice inside our heads that tells us what we cannot do, and more.High Performance Playbook is well worth reading. Highly recommended.",
      "url": " /blog/2022/06/30/high-performance-playbook/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-06-27-leaders-manage-risks": {
      "title": "Leaders Manage Risks",
      "content"	 : "A few years ago, I was invited to speak to a group of entrepreneurs about my business war stories. My background includes decades of leadership in technology and real estate. Most of the questions from the audience focused on those areas.At one point an audience member asked, “What do you say to people who consider entrepreneurship to be risky?”“It is risky,” I responded. And then I shared a story about potholes and steering wheels.Potholes and Steering WheelsBeing an entrepreneur is a lot like driving a car down a street covered with potholes. Most people who see the street covered with potholes simply throw up their hands and exclaim “Oh no! potholes!” And they avoid the street altogether.But something in the entrepreneurial DNA causes us to dig further. “Yes, the street has potholes,” observes the entrepreneur. “But I happen to know that there’s gold at the end of that street. If I can figure out a way to navigate the street in spite of the potholes, I can get the gold.”The entrepreneur recalls that the car is equipped with a steering wheel. Sitting in the driver’s seat, the entrepreneur turns the wheel to avoid the potholes, navigates the street, and grabs the gold.Yes, It’s RiskyThe above story will never compete against the fables of Aesop! But it makes the point. As business leaders, our job is to manage risk. When everyone around us throws up their hands in fear, our job is to gather data, create a plan, and execute the plan to completion. Yes, it’s risky. And our job is to manage risks so that the team can achieve the goal.Since successful entrepreneurs rarely work alone, everyone on the team wins when entrepreneurs achieve goals.Congrats and well done to all the entrepreneurs who manage risks!",
      "url": " /blog/2022/06/27/leaders-manage-risks/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-05-23-showbiz-advertising-real-estate": {
      "title": "Showbiz, Advertising, &amp;amp; Real Estate",
      "content"	 : "  Did I get rich quick in real estate? No, I did not. But I am now in the position to make my own decisions about how I spend my time, whether it’s on business, on Broadway, or watching my daughter graduate from kindergarten.~Matt PichenyBackstage Guide to Real Estate tells the apartment investing story of Matt Picheny, an entrepreneur with an eclectic background. His resume includes time as an actor, digital marketing expert, and advertising exec. Today he runs Picheny, LLC, a real estate private equity firm based in New York City with holdings around the USA. Picheny wrote the book to document his journey and to show others how they might follow his path.Facing Challenges Head-OnMatt has a wonderful way of facing challenges head-on and turning them into opportunities. For example:      Early in his career, he bought empty land in a vacation community near New York City. Only one problem: He didn’t know how to build a house on the land. So he leveraged his personal and professional network to learn about construction, boating, real estate development, and remote property management.        Matt house-hacked a duplex in Brooklyn, NY. Through that process, he learned about air rights, fried chicken restaurants, mosquito breeding, and zoning ordinances.        During his move from New York to Florida, Matt learned that an investor needs to act quickly to make an offer on a cherished deal, before the deal gets lost to another buyer.  Every challenge shaped Matt into a stronger real estate entrepreneur. Today Matt invests in larger real estate deals via syndication. People trust Matt enough to invest their money right beside him, and they benefit from his expertise along the way.Leveraging Expertise Beyond Real EstateOne point I really enjoyed: Through his real estate journey, Matt earned enough time and money to re-invest in the artistic world he loved in his youth, Broadway. He was an early investor in the play Hamilton, which went on to become an amazing success. Many stage productions are structured as limited partnerships which are similar in form to real estate syndications.Therefore, after spending 10,000 hours learning real estate syndication, Matt is well-suited to invest in Broadway plays. Transferrable learning is a wonderful thing!Trust, But VerifySuccessful real estate syndicators enjoy investing in deals structured by their peers. They have the money to invest and the expertise to perform proper due diligence. Matt shares some pointers on what to look for when investing passively. His policy is trust, but verify.Meeting the AuthorI had the honor of meeting Matt Picheny in Florida late last year. We were at a gathering of real estate investors orchestrated by Rod Khleif. Matt was enthusiastically promoting his book, which was available for pre-order on Amazon. A brief conversation with Matt convinced me to pre-order on the spot.Matt’s GenerosityIn early April 2022, during another Rod Khleif gathering in Florida, I learned that Matt was giving copies of his book to every member of the 600-person audience. So now I have two copies! If you want my extra copy, ping me via the contact form on this site. If the book is still available, you can send me your physical address and I’ll send the book to you. If you’re in Arizona, I might hand it to you personally!",
      "url": " /blog/2022/05/23/showbiz-advertising-real-estate/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-05-16-inspired-by-success": {
      "title": "Inspired By Success",
      "content"	 : "It is exciting to be inspired by success. Whenever I notice a business executing well, I ask myself this question: “How can I emulate this level of excellence within Bridgetown Partners?”Recent inspirational experience: Restoration Hardware in Nashville, Tennessee.You probably know Restoration Hardware as a seller of high-end home furnishings with locations in affluent areas around the USA. Yesterday, while walking through RH’s Nashville location, I discovered a restaurant in the middle of the showroom.“Discovered” is probably the wrong word. How do you discover something that has already been built by someone else? Still, I approached the hostess station to learn more about my… discovery. I learned that RH has managed restaurants in fourteen of their stores for roughly five years.“We also have a walk-up bar,” said one of the hostesses. “So, if you’d like to grab a coffee or glass of wine while you browse around, you’re welcome to it.”Brilliant idea.Any customer spending RH-level prices for home furnishings will want to take time to consider the purchase seriously. Humans tend to enjoy positive thoughts when the belly is full. RH’s restaurant investment is a smart way to position the customer for a positive purchase decision.And now my wheels are spinning. How do I provide something just as wonderful for Bridgetown’s customers?It’s exciting to be inspired by success. Steve Jobs is famous for repeating this quote from Picasso: “Good artists copy. Great artists steal.”",
      "url": " /blog/2022/05/16/inspired-by-success/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-04-30-what-is-asset-management": {
      "title": "What Is Asset Management?",
      "content"	 : "We once found a $10,000 charge for a plumbing expense that was not for our property (even our manager missed it). Had we not audited our financials on a monthly basis, we would have been responsible for that expense.-From the book Best in Classby Kyle Mitchell and Gary LipskyA successful commercial real estate syndication firm will build a team to handle the three main segments of the business:  Acquisitions. Finding and buying investment properties. Working with brokers and sellers to negotiate workable terms.  Capital Raising. Bringing in equity partners who will participate in the purchase of the property.  Asset Management. Creating a business plan for the property. Holding everyone accountable to ensure that the plan is well-executed.The book Best In Class focuses on asset management.About Best In ClassMitchell and Lipsky are experienced and effective asset managers. Full disclosure: I have partnered with Kyle and Gary on multifamily real estate in Arizona. Even with their level of expertise, they went out and gathered data and experiences from other successful real estate operators (150+) while writing this book.The average person learns from their own experience, while the wise person also learns from the experience of others.Asset Management and Rocket ScienceWe believe that good asset management is not rocket science. You have to be consistent. You have to pay attention to the details. You have to implement systems and processes to identify bottlenecks and not be afraid to ask a lot of questions. Mistakes happen, but they can be fixed if you pay attention.Reading this book and observing these authors in person has taught me that asset management is largely about proactive self-discipline. Yes, it’s important to be smart. Beyond intelligence, the effective asset manager identifies and solves issues early, before they fester into something big and expensive.For example, at one property where I have an ownership interest, we observed rusted metal stairs. The rust was not yet bad enough to cause injury to the residents. But our team moved forward with repairs anyway (proactively) because it’s the right thing to do. Result: Residents have a safer and nicer place to live. Everybody wins.Working With Property ManagementThe Best In Class chapter dealing with property management is titled “Managing the Manager” for good reason. The asset manager sets the big picture direction for the property. For implementation, the asset manager will typically hire a property management firm.Property management is a highly specialized profession. For larger communities of apartments (50 units, 100 units, or larger) the lender will require the syndicator to hire a professional property management firm as a pre-condition for the mortgage. Owners who want to self-manage must establish a true property management firm, complete with systems and practices on the level with the best professional firms.The property management team manages the property day to day, screening new tenants, collecting rent, handling repair requests, fielding emergency calls, and other daily tasks. The property manager and asset manager will typically meet once per week to review the business plan and to make decisions on any issues that have arisen since the previous meeting.The book makes an important point about decision making. Property managers have professional expertise, but final decisions rest with the asset manager. The asset manager (as an extension of the general partnership team) represents the best interest of the investors.A good asset manager will visit the property and check in on the on-site management, sometimes unannounced. Pro tip from the book: Any time a unit is vacant, go on-site and walk it. That’s a way to get a feel for the property without disturbing residents.In the language of the book Traction, one might think of the asset manager as the visionary and the property manager as the integrator. Both roles are vital to the successful execution of the business plan.Weekly Calls + ReportsThe devil is in the details: We have seen far too many operators not pay attention to the details, and their investors have suffered.The book contains a list of reports that the asset manager should expect to receive from the property management firm: Weekly, monthly, quarterly, annually. Some of the reports will need to be shared with the mortgage company as specified in the loan documents.ConclusionBest In Class is a sold book for anyone who wants an inside look at asset management. Other areas covered by the book, and not mentioned above, include key performance indicators (KPIs), Setting expectations with contractors and vendors, marketing (attracting new tenants), and investor relations. Well worth the time required to read it.Every asset management meeting is a learning experience for me. I’m grateful to my fellow syndicators, partners, investors, and related professionals. Grateful for the chance to learn from their experiences as well as my own.Related: UnderwritingThroughout the ownership cycle, the asset manager will compare the performance of the property against the original underwriting. The article What is Underwriting? provides useful info on the subject.",
      "url": " /blog/2022/04/30/what-is-asset-management/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-04-28-balloons-and-business-leadership": {
      "title": "Balloons and Business Leadership",
      "content"	 : "Take a look at the northern Phoenix sky on an early morning. You might see hot air balloons taking off. Clusters of balloons with baskets full of eager people suspended underneath.I recently took a ride in one of those balloons. Kudos to Hot Air Expeditions for offering an exciting early-morning experience along with some helpful business lessons.  Control What You Can  Communicate With Your Team  Celebrate SuccessControl What You CanOur balloon pilot was a veteran of the skies with decades of experience in balloons and fixed-wing aircraft. He told us that it’s possible to control upward and downward movement by regulating the hot air flowing into the balloon. But horizonal movement is at the mercy of the wind, moment by moment.For example, my original balloon flight was scheduled on a Tuesday. One day before the scheduled flight, I received a cancellation notice via email and text. The reason? The weather forecast was not cooperating. Before the balloons take off, the team needs to have a rough idea of wind direction so that the chase trucks can meet the passengers at the end of the balloon ride. Our departure was bumped to two days later.On the day of our balloon ride, toward the end, we expected to land in a desert area roughly 100 meters south of an asphalt road. Right before touch-down, we encountered a thermal: a gust of warm air rising upward. The gust took our craft with it, and we were airborne on the opposite side of the road. Can the balloon pilot control upward/downward movement? Yes, when nature allows the pilot to do so!Our pilot did an excellent job of keeping passengers informed throughout the flight. Many of us laughed when the flight was extended due to the unexpected thermal. Our pilot communicated well, and all of us were grateful for that.Communicate With Your TeamBeyond communicating with the passengers, our pilot was in constant touch with the chase truck on the ground. The ground called our balloon with local wind speed and direction info, and our pilot called the ground with location, altitude, and landing projections. Constant communication, back and forth.Teams work best when every member communicates.Celebrate SuccessAfter we landed, Hot Air Expeditions fed us a Champagne breakfast. My fellow passengers and I celebrated and laughed together. Our pilot told balloon jokes. What a morning!It’s important to celebrate success. And it’s fun!Bottom LinePiloting a balloon is a lot like leading a company. Everything works better when we control what we can, communicate with the team, and celebrate success.",
      "url": " /blog/2022/04/28/balloons-and-business-leadership/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-03-18-celebrating-business-with-bizdayglobal": {
      "title": "Celebrating Business with BizDayGlobal",
      "content"	 : "BizDayGlobal is the video podcast that celebrates business. The core belief of BizDayGlobal: When people do business with each other for mutual advantage, they are less likely to fight each other.What is Business?From the BizDayGlobal 44-second intro:  Business is cooperation.  Business inspires all of us to work together, and to win together.  Business lets us manufacture in Singapore and ship to Barbados through locks engineered in Panama, financed in Switzerland.  Business enables each of us to specialize in a skill, and to convert our valuable output into currency. Through business, we can trade our currency with other specialists to get the things we need.  Business enables a physician in Nairobi to use a computer designed in Cupertino to order medical supplies conceived in Berlin from a factory operating in Shenzhen.  Business is Ubuntu, the Zulu word meaning “I am because we are.”  Business links all of us together.Next StepIf this sounds interesting to you, we invite you to explore BizDayGlobal.",
      "url": " /blog/2022/03/18/celebrating-business-with-bizdayglobal/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-02-21-traction-component-plus-eos": {
      "title": "The Traction Component + EOS",
      "content"	 : "The back cover of Gino Wickman’s book Traction poses a powerful question:The entrepreneur’s vision gives birth to a business. Traction makes the vision real. Earlier in this series, we covered five components that are necessary to get the business moving in the right direction: Vision, People, Data, Issues, and Process. This article summarizes the sixth component, Traction.Traction enables the entrepreneur to gain a grip on the business. Traction is so important that Wickman’s entire book was named for this single component of EOS.What is the Traction Component?Traction can be defined as how well something moves ahead without slipping. Tires need traction to move through snow. Companies need traction to move from vision to reality.This article is part of a series on Traction and the Entrepreneurial Operating System (EOS). EOS is a set of tools that enables a business leader to grow a company while maintaining sanity.Accountability and DisciplineOrganizational consultants have learned that accountability and discipline are the areas of greatest weakness in most companies. The EOS tools are systems that instill accountability and discipline into the fiber of the organization. For example, the Issues component describes a definite process for resolving problems in the organization: Identify, Discuss, and Solve. Systems like IDS become part of the culture of the organization, and that enables the team to achieve.90-Day PulseMany of the tools within EOS are based on observations about human behavior. For example, most humans and teams can stay focused on a project for about ninety days. After ninety days, our focus drifts and we tend to go off on tangents. That is why it’s necessary for us to re-group and re-focus on the big picture goals every ninety days. The EOS tools support this 90-day pulse.Rocks, Gravel, Sand, and WaterThe term Rock is borrowed from a business fable from Steven Covey’s Seven Habits of Highly Effective People. Imagine a glass container next to a pile of rocks, a bucket of sand, and a glass of water. If you want to get the rocks, sand, and water into the glass container, it’s better to start with the rocks first. The gravel fills in the spaces between the rocks, sand fills in the spaces between the gravel, and the water completes the process.Rocks represent the priorities that the organization must accomplish in the next ninety days. The leadership team chooses three to seven Rocks per quarter. Each Rock has a single person who is accountable for the Rock’s success. The accountable person is known as the Rock’s owner.The Traction Component includes a method for extracting Rocks from the Vision/Traction Organizer (V/TO) described earlier in this series.Meeting PulseMeetings are designed to happen at regular, predictable times. Hence the term Meeting Pulse. The EOS framework has provisions for meetings that occur annually, quarterly, and weekly.Example: Here are some rules for weekly meetings…  Be on the same day &amp;amp; time each week.  Start on time.  Have a pre-printed agenda.  End on time.The time constraint keeps meetings from going on &amp;amp; on beyond the point of productivity.Level 10 MeetingsIf a meeting can be rated on a scale from 1 to 10, the goal of a Level 10 meeting is to be rated at 10. After decades studying meetings in a variety of industries, EOS consultants have created a template for successful meetings that they call Level 10.Each Level 10 meeting starts with a Segue into the meeting. The purpose of the segue is the shift all minds from working in the business to working on the business. During the segue, participants will share good news about recent company achievements, perhaps something that an individual has done well. The Traction chapter shares an agenda with approximate durations for each section of the meeting.ConclusionEvery component of Traction strengthens the others. Result: A more productive organization.EOS RecapIf you are considering EOS for your business, you might enjoy the other articles in the series:  EOS Overview  Vision  People  Data  Issues  Process  Traction (this post)",
      "url": " /blog/2022/02/21/traction-component-plus-eos/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-02-15-process-plus-eos": {
      "title": "Process + EOS&amp;#58; The ROIClear Way",
      "content"	 : "Consistency is one of the most effective tools we can use to keep customers coming back for more. When first-time customers become repeat customers, revenue explodes (in a positive way). Customers trust brands like Starbucks, Apple, and Google because expectations and delivery are consistently aligned.How does a company achieve consistency? Through processes.The Process ComponentThis article is part of a series on Traction and the Entrepreneurial Operating System (EOS). EOS is a set of tools that enables a business leader to grow a company while maintaining sanity. Today’s EOS component: Process.Shout Out to E-Myth by Michael GerberThe author of Traction offers tribute to Michael Gerber, author of business classics The E-Myth and The E-Myth Revisited. Gerber’s point in his books (and speeches and interviews) is that the entrepreneur must create systems if they ever want to have a life outside of their business. We must view the business as a “pre-production prototype of a mass-producible product.” When we systemize the business, we can step outside of it, fine-tune it, and scale it.Business owners who complain about lack of control and lack of freedom need to work on systemizing their businesses.How to SystemizeSystemizing consists of two key steps:  Document core processes.  Ensure that the processes are followed by everyone in the organization.Systemizing Example: ROIClearFor our systemizing example, we will use a company that I happen to know well: ROIClear. ROIClear manifests my vision for serving clients and customers by leveraging my careers in commercial real estate, software development, and community service. The three layers support each other as shown in the diagram below.This is how we define the layers at ROIClear:  Commercial Real Estate. At our foundation, we’re a commercial real estate firm. We buy multifamily apartment properties and we improve them so people can have a great place to live. We also serve outside investors by giving their capital a place to grow at minimal risk.  Software Development. The best software companies have a deep understanding of user needs. When the development company is also a user, understanding is amplified. As a commercial real estate firm, we are in a great position to observe the parts of our industry that need a boost from great software. Even better, the CRE foundation gives us time to fine-tune our finished software products (see Runway, below).  Community Service. Money for the sake of money is meaningless. For decades, our leadership team has served the tech and business communities by leading groups and conferences. Currently, the ROIClear Podcast and the Arizona Multifamily Mastermind Group (AZMM.org) are our main community service vehicles.We’ve structured the CRE layer of ROIClear to produce a long Runway for all company ventures. With a longer runway, the software team has time to learn the market, experiment with products, learn from mistakes, and produce great results for customers.Beyond the Big-Picture VisionA single chart with boxes and lines is only the beginning. The leadership team must document the company’s core processes. These can vary between companies, but the list of core processes is likely to include the following:  HR. How your company finds, hires, orients, manages, reviews, promotes, retains, and fires people.  Marketing. Identifying your target audience and getting them interested in your product.  Sales. Converting prospects into customers.  Operations. Your way of making the product or providing the service to the customer.  Accounting. Tracking the money.  Customer Retention. Determining what keeps customers coming back for more. And giving it to them.Document the 20%, Get 80%The author makes an insightful point about documentation: Don’t document everything. If we try to document 100% of the company’s processes, we risk falling into analysis paralysis, and that’s just a death spiral. The world will change (perhaps drastically) before we have time to achieve 100% documentation. Therefore, we stick with the Pareto Principle. Create the 20% of documentation that yields 80% of results.How much is 20%? Hard to say. That answer will vary from company to company. This is where business artistry plays a role.EOS RecapIf you are considering EOS for your business, you might enjoy the other articles in the series:  EOS Overview  Vision  People  Data  Issues  Process (this post)  Traction",
      "url": " /blog/2022/02/15/process-plus-eos/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-02-10-issues-plus-eos": {
      "title": "Issues + EOS",
      "content"	 : "From The Issues Component chapter of the book Traction:  Problems are like mushrooms. When it’s dark and rainy, they multiply. Under bright light, they diminish. In an organization where there is nowhere to hide, the problems are easily illuminated. EOS will create that strong light.Time to shine the light, find the issues, and solve them.The Issues ComponentThis article is part of a series on Traction and the Entrepreneurial Operating System (EOS). EOS is a set of tools that enables a business leader to grow a company while maintaining sanity. Today’s EOS component: Issues.Issues are not a sign of weakness. Every organization has issues. Strong organizations have a framework for resolving issues. The Issues chapter of Traction presents such a framework.People in the organization must feel comfortable calling out anything that stands in the way of the company’s vision. Leadership must create an environment of honest and respectful communication. If a leader kills the messenger,  then small problems will be allowed to fester and grow until they become truly threatening.The Issues Solving TrackThe EOS framework for solving issues consists of three key steps:  Identify  Discuss  SolveIdentifyWhen we attempt to identify an issue, we rarely get it right on the first try. The true issue is typically a few layers down. During the Identify step, members of the team gather together to explore the issue. Explorations like this can get uncomfortable, and the participants can only power through the pain if they trust each other.DiscussIt is tempting to blend the  Identify and Discuss steps because humans enjoy talking about things. But the IDS methodology  encourages us to discipline ourselves against this. Why? So that we can avoid tangents. Meetings can go on forever when tangents remain unchecked.Instead of “Discuss”, a better name for this step might be “Discuss the Solution”, thereby drawing a clear line between the first two steps.According to the methodology, the Discussion step is everyone’s opportunity to share everything they know about the issue identified above. Everything goes out on the table, and nothing is sacred.SolveThis step becomes an action item for someone to do. And someone must be responsible for the outcome. If everybody is responsible, then nobody is responsible.IDS Between OrganizationsIn one example from the book, two companies that do business together were having problems. Both companies happened to be users of EOS. So they got together in a conference room and processed their differences using IDS as described above. The methodology works between separate organizations.EOS RecapIf you are considering EOS for your business, you might enjoy the other articles in the series:  EOS Overview  Vision  People  Data  Issues (this post)  Process  Traction",
      "url": " /blog/2022/02/10/issues-plus-eos/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-02-04-data-plus-eos": {
      "title": "Data + EOS",
      "content"	 : "Traction’s chapter on The Data Component describes a pilot flying over an ocean. During the flight, the pilot announces:  I’ve got bad news and good news. The bad news is that our gauges are broken. We don’t know how fast we’re flying or in what direction, and we don’t know our fuel level. The good news is that we’re making great time!An entrepreneur needs data to run a business, just as a pilot needs gauges to fly a plane. Data makes progress visible, and data also tells us when course corrections are needed.The Data ComponentThis article is part of a series on Traction and the Entrepreneurial Operating System (EOS). EOS is a set of tools that enables a business leader to grow a company while maintaining sanity. Today’s EOS component: Data.ScorecardA scorecard is a succinct collection of numbers that can tell you at a glance how a business is doing.One important attribute of a scorecard: It must give useful information while there’s still time to act. A profit &amp;amp; lost (P&amp;amp;L) statement, for example, does not work well as a scorecard because P&amp;amp;L numbers are trailing indicators. They’re reported after action has already been taken, and you can’t change the past.A useful daily scorecard for a sales team might report the number of calls made during a given day, the number of orders received because of those calls, and the responses given by customers who decided not to buy that day.Every business has a unique scorecard.Creating a ScorecardThe author proposes a clever exercise to guide the reader through scorecard creation. The head of the business should gather the leadership team together and ask them to imagine being on a desert island somewhere. The island does not have email or phone lines. All the team has is sheet of paper with a collection of numbers. The numbers are magically updated every week. And this magic paper, the scorecard, is the only tool the leadership team receives to keep track of the business on a weekly basis.What categories will the leaders need to track to have a clear view of the health of the business?Some categories to consider: Weekly revenue, cash balances, weekly sales activity, customer satisfaction/problems, accounts receivable, accounts payable, etc.The finished scorecard should contain five to fifteen numbers (the fewer the better). Simplicity is key.Assigning Responsibility + DeadlinesDecide which member of the leadership team will be responsible for each category. Choose a goal for each item. Since the company vision is clear, each category will tie to the one-year plan.The Data chapter offers more implementation details.Using the ToolThere is a name for business tools that are created and not used: credenzaware. It just sits on the credenza in someone’s office, waiting to be replaced by the next business management tool.Don’t let the scorecard become credenzaware!EOS RecapIf you are considering EOS for your business, you might enjoy the other articles in the series:  EOS Overview  Vision  People  Data (this post)  Issues  Process  Traction",
      "url": " /blog/2022/02/04/data-plus-eos/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2022-01-31-what-is-underwriting": {
      "title": "What is Underwriting?",
      "content"	 : "Anyone who invests in commercial real estate (CRE) is buying a multi-million-dollar business secured by real estate. A successful business will generate a profit. A wise investor will be reasonably sure of profitability before investing.Nashville: Thank You!The Nashville Multifamily Meetup Group hosted an underwriting discussion, and they invited me to present. Thank you Josh Cooper and Tommy Brant for making it happen!&amp;nbsp;Underwriting DefinedWhat is underwriting and why do we care?Underwriting is the process of…  Gathering financial and historical information about an investment.  Gathering data about the location of the investment, including population trends, job growth, income growth, and crime statistics.  Blending that information with our professional judgment (and guesses about the future).… and using what we’ve gathered to decide whether buy or pass on the investment.Most Important QuestionThis is the most important question in underwriting:  How do I take this piece of real estate and turn it into a business that makes money?Many underwriting models are built with Microsoft Excel or Google Sheets. The math is not complicated, but the numbers are so closely related to each other than a small error within one cell can wreak havoc in more important cells further along the chain of calculation. When investing money, it’s important to protect ourselves against the butterfly effect.VideoCheck out the above video for a 30-minute discussion (plus Q + A) about underwriting. Play the content at double-speed if you’re impatient. And feel free to contact me if you want to dig further. I enjoy conversations about underwriting and everything else related to commercial real estate investing.I look forward to hearing from you.",
      "url": " /blog/2022/01/31/what-is-underwriting/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2021-05-31-the-slight-edge": {
      "title": "The Slight Edge",
      "content"	 : "  When people are looking down the barrel of failure in their lives, they will do whatever it takes to get themselves moving… …you already know how to do everthing it takes to make yourself an outrageous success. -Jeff Olson, Author of The Slight EdgeJeff Olson is a business leader, CEO, and a perpetual student of personal development. He has spent years observing business professionals, especially himself. After watching people make and lose fortunes in business, athletics, and other worthy endeavors, Olson documented the patterns of survival, failure, success, and self-sabotage that all of us experience.Humans are pattern-recognition engines. When we see a pattern and when we know what to do about it, we can improve our results. That’s one of the messages of The Slight Edge.Failure, Survival, &amp;amp; SuccessHave you ever noticed how focused you become when facing a deadline? Yeah, me too. Within each of us, there’s a potential failure and a potential success. When we’re facing down the gun-barrel of a deadline, we focus our minds, we execute, and we get the mission done. If you’re like me, you might think: “How can I make myself focus like that all the time?”We already know what tasks to take ourselves from comfort to massive success. We just need to perform those tasks consistently over the long term. And then the results will grow over time like compound interest in an investment account. If it’s really that easy, why don’t we do it?PatienceAccording to Olson, we know what to do and we’re capable of doing it, initialy. But when our expectations of massive results are not met immediately, say within the first thirty days, we give up. Is there a secret we can leverage to push ourselves beyond that period of initial enthusiasm? Yes. We need to change the way we think.Thinking About FailureThe author gives several examples of how we might change our thoughts on the path to greater effectiveness. One example: Failure. Some of us strive to avoid failure at all costs. But if we think of failure as something to avoid, we will avoid taking risks that can potentially lead to success. In the words of Grace Hopper: “A ship in the harbor is safe, but that’s not what ships are made for.”Michael Jordan didn’t make his high school basketball team as a sophomore. But he worked hard and made it in his junior year. Thomas Edison endured thousands of failed experiments while developing the light bulb. Edison’s view of failure: “I have not failed. I’ve simply discovered ten thousand ways that don’t work.”Olson has observed that successful people fail their way to the top.Plant, Cultivate, HarvestSometimes we expect results without putting in the necessary work. Is it possible to harvest crops without planting seeds? If we plant seeds yet neglect to tend to the crops, what kind of harvest can we expect?Plant, cultivate, harvest. Nature’s order works.What is the Slight Edge?Bottom line: The Slight Edge is the simple set of tasks must perform every day, day after day, over a long period of time, to achieve the goals we have set for ourselves. This principle works with compound interest, with crops in the field, in athletics, and in business. Living according to the Slight Edge is simple, and not easy. But it’s highly effective.",
      "url": " /blog/2021/05/31/the-slight-edge/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2021-05-29-who-not-how": {
      "title": "Who Not How",
      "content"	 : "The Entrepreneurial Operating System (EOS) as described in the book Traction consists of six components. The second component, People, focuses on attracting the right people to the team and putting them in the right positions within the organization.Who Not How by Dan Sullivan and Dr. Benjamin Hardy, is a book that explores one way that people can come together to form effective organizations.On the Court  If you want to go fast, go alone. If you want to go far, go with others. - African ProverbThe authors of Who Not How enjoy sports history. For example, they cite Michael Jordan’s early years with the Chicago Bulls. Jordan was one of the strongest players in the NBA throughout his professional career. Most observers agree that in order to win championships, Jordan needed to be teamed with Scottie Pippen, Dennis Rodman, Phil Jackson, and Tim Grover.Pippen, Rodman, Jackson, and Grover were the Whos who enabled Jordan to blossom into a brilliant  player.Off-Court SupportNote that the last two, Jackson and Grover, never joined Jordan on the court. Jackson was the coach who knew how to pull the team together and design plays that leveraged the strengths of every player. Grover was the high-performance trainer hired by Jordan for a 30-day regimen. Grover performed so well that Jordan extended the engagement for the next fifteen years.Yes, it is important for us to hone our individual skills. To know How to execute. And by leveraging the Whos around us, we can achieve more.How many of us try to perform (the How) like Michael Jordan without the team (the Whos)?Create Value FirstWhen seeking a Who to help with a goal, we must ensure that they also receive value from the goal. We already know “What’s in it for me?” It’s more important for us to understand “What’s in it for them?”In the above sports example, Jordan wanted to win championships. Same for Rodman and Pippen. Jackson is driven by the opportunity to build teams. Grover, as described in his book Relentless, is fulfilled by the chance to improve the performance of the greatest athletes on the planet.Goals were aligned for every person in the Bulls example. That’s how championships are won.Be a Who for OthersFurther, in the Bulls example: Each member of the team was a Who for the other members of the team. One effective way to find a Who is to be a Who for others with goals compatible to ours.Conclusion  If you want to build a ship, don’t drum up the people to gather wood, divide the work, and give orders. Instead, teach them to yearn for the vast and endless sea. ― Antoine de Saint-ExupéryA well-trained individual can accomplish much. At the same time, a team of individuals, working in concert as a team, can achieve more.Well said, Antoine de Saint-Exupéry.",
      "url": " /blog/2021/05/29/who-not-how/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2021-04-08-people-and-eos": {
      "title": "People + EOS",
      "content"	 : "One thing I admire about the book Traction: The author borrows business concepts from other books, while giving generous credit to each source. For example:  The idea of getting the right people in the right seats comes from the book Good to Great by Jim Collins.  Organizing a business around three key components (finance, marketing, and operations) comes from Michael Gerber’s E-Myth Revisited.The Entrepreneurial Operating System (EOS) adds value by molding these concepts into useful tools. This post discusses tools that leaders need when interacting with their team.Roles on The Business BusWe might think of business as a bus carrying passengers on a long journey. Perhaps a cross-country road trip. The entrepreneur, as organizer of the bus trip, needs people to fulfill the following roles:  Driver. Knows the rules of the road and willingly obeys them.  Navigator. Reads the map and plots a course from start to destination. When obstacles are encountered, this person knows enough about maps to plot an alternate course.  Money-keeper. Tracks the money. Pays for hotel rooms, food, fuel, and other necessities along the trip.  Song-leader. When I was a kid in day-camp, this role was critical for maintaining morale when we traveled on field trips.  Organizer. Also known as the entrepreneur or the visionary. This is the person who brings people together for trips like this.You can probably think of additional roles. The above list is long enough for this article.Right People, Right SeatsWhat are some things we might consider when selecting people for the various roles? In Traction, the author suggests that we measure each member according to three criteria. Do they get it, do they want it, and do they have the capacity to do it? Traction abbreviates this as GWC.  Get it. They understand the mission of the company. They agree with the mission, and they feel driven to go beyond the call of duty while helping to achieve the mission.  Want it. They want to be in the role that they’re asked to fill. They genuinely like the job, and their enthusiasm will propel them to perform exceptionally well.  Capacity to do it. They have the skillset to excel in the role, or they have the ability to learn quickly.The book contains tools that leaders can use to measure GWC and to coach members of the team as needed.One Name, Two Seats?  You can have one name in two seats, just not two names in one seat.~Gino WickmanThe founder of a company starts off by playing every role, occupying every seat. To serve customers better and to grow the company, the entrepreneur must hire others.In the bus trip metaphor, it’s okay to be driver + navigator on a short trip. But we can travel further (and have more fun) when different people fill these roles.EOS RecapThis article is part of a series on Traction and the Entrepreneurial Operating System (EOS). EOS is a set of tools that enables a business leader to grow a company while maintaining sanity. As the other articles are completed, links will appear here:  EOS Overview  Vision  People (this post)  Data  Issues  Process  TractionNext in the Series: Data  Without the data, yo chatta don’t matta.~Anonymous Data ScientistNext EOS topic: Data. Running a business without data is like driving a bus without a dashboard. You can run it that way for a while. But without a data dashboard, we’ll break speed limits, over-rev the engine, and eventually run out of fuel. The right data gives us clarity so that we can make better decisions.",
      "url": " /blog/2021/04/08/people-and-eos/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2021-04-07-time-saver-on-macos-un-check-reviews": {
      "title": "Time Saver on macOS&amp;colon; Un-Check Reviews",
      "content"	 : "Does macOS ask you to review software at inconvenient times, like when you’re scrambling to meet a deadline? Here’s how to stop the request from popping up.Open the App Store, go into “Preferences”, and uncheck “In-App Ratings &amp;amp; Reviews”. No more requests for reviews.This technique works as of the date of this post. Will macOS change in the future? Probably!",
      "url": " /blog/2021/04/07/time-saver-on-macos-un-check-reviews/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2021-03-08-vision-and-eos": {
      "title": "Vision + EOS",
      "content"	 : "This article is part of a series on Traction and the Entrepreneurial Operating System (EOS). EOS is a set of tools that enables a business leader to grow a company while maintaining sanity. Today’s EOS component: Vision.Most entrepreneurs can see their vision clearly. Problems arise if they assume that everyone else in the organization can see it, too. But humans are not mind-readers. We can only see the vision of another person if that vision is communicated clearly and with intention. EOS solves the vision problem with the Vision/Traction Organizer (V/TO). Let’s explore.Decide on the VisionEOS suggests that business leaders can clarify their vision by answering eight questions:      What are your core values?        What is your core focus?        What is your ten-year target?        What is your marketing strategy?        What is your three-year picture?        What is your one-year plan?        What are your quarterly Rocks?        What are your issues?  The book contains exhaustive procedures for wrestling with the above questions, along with frameworks for thinking about the answers.For example, Rocks are the key initiatives that the company must complete quarterly in order to achieve annual business goals. Every short-term activity, no matter how small, is connected to a long-term goal. Every member of the organization knows how their work fits into the bigger picture. The result: All members of the team start rowing in the same direction. And the organization becomes unstoppable.One Example: Core ValuesAs defined in the book Traction, core values are a small set of vital and timeless guiding principles for a company. Here are the core values of ROIClear:  Collaboration. ROIClear’s leadership team learned long ago that we can achieve more by collaborating internally (between members of our team) and externally (with our clients and vendors). In every interaction, we seek to achieve win/win arrangements where all parties would welcome the chance to do business again.  Community Service. Members of ROIClear give back to the communities where we live and conduct business. Scouting, adult literacy, martial arts, and job training are a few of the areas where our team members contribute to the community.  Profit. ROIClear is a business. Therefore, we must generate a profit. Our profit motive is tempered by our first two core values: Collaboration and Community Service.Great companies can differ in their values. The key is to have consistent values that are good for the long-term health of the company, its clients, and the community.Communicate the Vision  The number one reason employees don’t share a company vision is that they don’t know what it is. The only way to determine if your vision is shared by all is to tell them.~From the book TractionAfter the leadership team has defined its vision (guided by the eight questions), it’s time to communicate the vision throughout the organization. Simpler is better. That’s why the V/TO is only two pages long. You can download your copy of the V/TO at EOSWorldwide.com/VTO.Six Key ComponentsThis article is part of a series on Traction and the Entrepreneurial Operating System (EOS). EOS is a set of tools that enables a business leader to grow a company while maintaining sanity. The six EOS components are:  Vision (this post): Shared by all.  People: The right people in the right seats.  Data: Food for the metrics. Everyone must have at least one number.  Issues: Identified in the clearest possible terms, attacked through IDS.  Process: Standard, repeatable methods for getting things done.  Traction: Forward momentum. Getting the right things done.Breaking an organization into standard components gives the leadership clear concepts to think about. Further, these components form the foundation of the shared vocabulary that enables effective communication.Next in the Series: PeopleNext EOS topic: People. We’ll review ideas from EOS on how to choose the right people, and how to create an environment where every member of the team can thrive while helping the organization to grow.",
      "url": " /blog/2021/03/08/vision-and-eos/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2021-02-15-traction-entrepreneurial-operating-system-eos": {
      "title": "Traction and the Entrepreneurial Operating System (EOS)",
      "content"	 : "As we grow ROIClear, the leadership team is building the company on a foundation of systems and metrics. Systems enable everyone on the team to speak, listen, and think with a shared language and a common vocabulary. Clear metrics enable everyone to know that the ship is on course. The best metrics also give guidance on self-correction.Many books offer advice on systems and metrics: E-Myth by Michael Gerber and Scaling Up by Verne Harnish are two well-known titles. After exploring several methodologies, I have chosen to base ROIClear’s systems on Traction by Gino Wickman. ROIClear has great momentum. By refining our tools, we will accelerate our growth.Entrepreneurial Operating System (EOS)Traction tells how to implement the Entrepreneurial Operating System (EOS) within a company. This post will not cover all of EOS. Rather, I’ll share a few of the EOS ideas that stand out for me.Give Everyone a Number. Let Them Self-Correct.Everyone on the team needs a target number. From this number, each team member knows whether they’re on or off course. The best metrics will guide the member on how to self-correct.For example, one company assigns the number two to their telephone reception team. All phone calls must be answered within two rings. Everyone who answers phones knows immediately whether they’re on course, and the number tells them how to self-correct.Another example: While inspecting a steel refinery, the company CEO took out a piece of chalk and wrote a single number on the factory floor. The chalk-written number represented the quantity of steel produced by the day shift. When the night shift arrived, they noticed the number, asked about it, and they immediately felt driven to compete. At the end of their shift, they rubbed out the old number and replaced it with their own (larger) number. The day shift repeated this competitive cycle. In time, this plant became the most productive refinery in the company. Each shift was driven by a number, and they knew how to self-correct.Every EOS metric should offer simplicity and self-correction.Hold Better MeetingsIn the words of Jason Fried and the team at Basecamp, meetings are the practical alternative to work. EOS offers a way to run better meetings where work actually gets done. EOS calls these “Level 10 Meetings” because that’s how they would be rated on a scale of one to ten, where ten indicates excellence.Some attributes of a Level 10 Meeting:  The meeting starts and ends on time.  The agenda is clear. Issues are identified, discussed, and solved via EOS’s Issue Solving Track, described below.  When a course of action is determined, one person is given ownership of the action. That owner will execute the action and report on success or failure during the next meeting.Under EOS, solid systems and sound metrics will render many meetings unnecessary. The meetings that remain should aspire to Level Ten.Issues Solving Track: Identify, Discuss, Solve (IDS)We’ve all been in business meetings that seem to drag on forever. Identify, Discuss, and Solve (IDS) is an EOS method for handling issues that arise. In a nutshell…  Identify the issue. State the problem in the clearest possible terms.  Discuss. Cover any information relevant to the issues raised above.  Solve. Many times, this will mean assigning ownership of the solution to a member of the time. Sometimes issues disappear because they were merely symptoms of a previously solved issue.When people in the room have the shared language of IDS, clarity arrives sooner, and work gets done.Six Key ComponentsEOS divides organizations into six key components.  Vision: Shared by all.  People: The right people in the right seats.  Data: Food for the metrics. Everyone must have at least one number.  Issues: Identified in the clearest possible terms, attacked through IDS.  Process: Standard, repeatable methods for getting things done.  Traction: Forward momentum. Getting the right things done.Breaking an organization into standard components gives the leadership clear concepts to think about. Further, these components form the foundation of the shared vocabulary that enables effective communication.EOS ImplementorsEOS implementation does not happen overnight. Many companies find it helpful to engage a full-time Traction/EOS implementer to maximize effectiveness. Through the ROIClear Podcast, I had the pleasure of interviewing Rainee Busby, based in Houston, TX. Here’s the discussion: Busby is a seasoned leader and entrepreneur. She brings the EOS methodology to companies of various sizes, and in multiple industries.Conclusion  You have to do the work. Don’t think that reading this book will fix your company.~Gino Wickman, author of TractionIt is very easy to read a book like Traction, to nod knowingly, and to return the book to the shelf without taking action. It feels so good to read about solutions! Implementation can be painful, like a good athletic workout.Check here for EOS updates as we move forward with the implementation. Now, it’s time to get back to work.",
      "url": " /blog/2021/02/15/traction-entrepreneurial-operating-system-eos/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2021-02-01-focus-on-the-one-thing": {
      "title": "Focus on the One Thing",
      "content"	 : "We live in a world of distractions. As business leaders, we always have many things to do and limited time in which to do them.What if we could cut through the clutter and get better results in less time? The One Thing by Gary Keller and Jay Papasan offers some ideas.To-Do List ParalysisYou may remember the story about a donkey standing between two piles of hay. The donkey starved to death because he could not decide which pile to eat first.That’s how the human brain responds to a bloated to-do list. Lots of tasks, all of them feel important. We bounce between them, which leads to mediocre results. How do we decide what to do next? Better question: How many of those to-dos should never have been on the list in the first place?The Focusing QuestionWhen deciding what tasks to keep and what to toss, Keller and Papasan recommend that we ask the following:  The Focusing Question: What’s the one thing I can do right now to make everything else easier or unnecessary?A few Focusing Question examples:  Personal Life: What’s the One Thing I can do today to strengthen my spiritual faith?  Professional Life: What’s the One Thing we can do right now to accomplish our goals ahead of schedule and under budget?Applying The Focusing Question to my to-do list enabled me to remove over 75% of the items. My list was bloated with lots of “nice to do” tasks that were only marginally related to my goals. Now I can get real work done.Van Halen’s One Thing: Practice  Alex Van Halen has said that when he would go out at night his brother Eddie would be sitting on his bed practicing the guitar, and when he came home many hours later Eddie would be in the same place, still practicing. That’s the journey of mastery - it never ends.~Excerpt from The One Thing, p177Malcolm Gladwell popularized the ten thousand hours of practice rule in one of his books. Eddie Van Halen made practice his One Thing as a teenager. As a result, Van Halen enjoyed decades as an electric guitar legend.Van Halen’s story might inspire us to ask, “What’s the One Thing I need to practice right now?”ConclusionThis post touches on the parts of The  One Thing that resonated with me, personally. Your experiences are different from mine. Suggestion: Grab a copy and read it for yourself. Make that your One Thing next week!AcknowledgementSpecial thanks to Rod Khleif of REM Capital for recommending The One Thing to me.",
      "url": " /blog/2021/02/01/focus-on-the-one-thing/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2020-02-19-raving-fans": {
      "title": "Raving Fans",
      "content"	 : "  Successful organizations have one common central focus: customers. It doesn’t matter if it’s a business, a professional practice, a hospital, or a government agency, success comes to those and only those who are obsessed with looking after customers.~Harvey Mackay, in the Foreword of “Raving Fans”Ken Blanchard and Sheldon Bowles wrote Raving Fans in the early 1990s, before the internet had captured the attention of the general public. The book makes no mention of web browsers, email, or online stores. And yet the book is not old. The lessons are timeless and useful for any company that wants to compete and thrive in 2020 and beyond.Raving Fans is a short book, written in story format, and the whole thing can be devoured in a few hours. If you’re like me, you’ll want to go back and re-read several passages after you’re done. The core idea of the book centers around three key activities:  Decide what you want.  Discover what the customer wants.  Deliver plus one.Decide What You WantSo many customer service lessons revolve around the idea that the customer is always right. The problem with the always right approach is that a business runs the risk of trying to be all things to all people. That’s a prescription for burn-out and failure.Better: A company must create a clear vision for what it wants to offer customers, and then offer that clear vision to potential customers. Can the vision shift over time? Yes! And that takes us to the second point.Discover What the Customer WantsThe easiest way to discover what the customer wants: Ask them, listen, and don’t expect them to be forthcoming with their answers.One must employ a certain technique when listening for customer needs. In the book, the authors describe the technique as listening to the lyrics as well as the music. As business leaders, we need to listen to what the customer is saying as well as what they’re not saying.Beware if the customer is saying nothing. Silent customers are deadly to business. When customers are silent, it’s time for us to probe, to ask questions, and to listen.Deliver Plus OneThe world changes over time. Customers are part of the world, therefore customers change over time, too. Listening to customers puts us in an excellent position to anticipate their needs and to meet their needs, sometimes in ways that they never could have imagined.Classic example: Akio Morita was CEO of Sony Corporation in the 1970s. One sunny day, Morita was walking along Venice Beach in California. He observed that people were roller skating on the sidewalk with large boom-boxes on their shoulders. He empathized with the skaters. And he imagined, what if the skaters could carry high-quality music without the weight of a boom box? That’s how the Sony Walkman was born.Satisfied Customers are Not Enough: Raving FansThe book Raving Fans is an excellent read for any business leader who wants to grow their company into a powerhouse.",
      "url": " /blog/2020/02/19/raving-fans/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2020-02-06-sam-zell-solves-business-puzzles": {
      "title": "Sam Zell Solves Business Puzzles",
      "content"	 : "  Business is not a battle to be waged. It’s a puzzle to be solved. ~Sam ZellSam Zell is a Chicago-based investor in real estate and troubled assets. He is known for successful business turnarounds and his direct style of communicating. Sometimes he ends his verbal messages with a question: “Am I being too subtle?”Hence the title for his autobiography. Sam has an embedded sense of urgency.Staying InformedReaders learn about the period prior to Sam’s birth when his parents were forced to leave Poland at the beginning of World War II. His parents, Bernard and Rochelle, were multi-lingual and intellectually curious. While many of their relatives and neighbors were content to consume local news from the Polish authorities, Sam’s parents read newspapers from Germany, France, Switzerland, and other nations where signs of war were brewing. Their curiosity about the world around them meant that they were well informed before the fall of Poland.Zell’s parents and his older sister, Julie, left Poland just hours before Germany bombed the railroad tracks and marched in.Voyage to AmericaDuring the journey to America, Rochelle learned that she was pregnant with Sam. The year was 1941. Traveling from Europe to America meant several stops along the way, always avoiding the shadow of the Nazis. The family passed through Russia, Japan, and Curaçao before arriving in Seattle, WA, USA. Bernard had been a grain merchant in Poland. He saw the centrally-located city of Chicago as a natural place to continue his profession. The family relocated to Chicago, and Sam was born there on Sept 28, 1941.Bernard’s and Rochelle’s insatiable curiosity was passed on to their son, Sam. After the family moved to the northern suburbs, Sam continued to take the train into the city, officially for school, but mainly to explore. As a pre-teen, he discovered that certain magazines were in demand among his north suburban friends. He purchased the mags for fifty cents each in the city, and sold them for three bucks in Highland Park. At age twelve, Sam had discovered arbitrage.Sam’s formative years were spent at Camp Ramah, a Hebrew-speaking summer camp in Wisconsin. Young campers were treated as responsible citizens from day one. Sam enjoyed the independence and the meritocracy for eight weeks every summer. The experience built his self-confidence.Sam readily acknowledges the role that his parents played in shaping his life. They blessed him with an inheritance of intelligence, curiosity, drive, resilience, and self-determination.College YearsSam studied political science at the University of Michigan in Ann Arbor. He chafed at rote memorization. His love of motorcycles began in college. Today, he and his friends (they call themselves Zell’s Angels) take two motorcycle trips per year along windy roads with beautiful landscapes.Zell launched his real estate career during his junior year at U of M. A friend’s landlord was building a 15-unit apartment building. Sam convinced his friend that they could manage the property for the landlord. They made the pitch and they got the management business. It never occured to Sam that he and his friend couldn’t do it. “Why not?” is part of his DNA.After their first deal with the 15-unit owner, Sam and his friend created a brochure and they went around Ann Arbor pitching other landlords. He met his business partner, Bob Lurie, during this time. Bob’s detail-orientation was a welcome complement to Sam’s big-picture optimism.Sam held summer sales jobs with Helene Curtis, calling on drugstores and supermarkets. Working in sales built up his tolerance for rejection. Today, he will tell entrepreneurs that indifference to rejection is a fundamental part of being successful.Law SchoolSam’s initial feelings about law school can be summed up in one quote from the book: “Law school was boring beyond belief.” He enrolled and graduated to please his parents. Decades later, as he found himself working through complex business deals, he was greatful for the thinking framework that his legal education had given him.Zell bought his first building, a three-unit apartment building, during his second year of law school. His father was an early investor. This gave Sam a great sense of pride. The father’s investment was tangible proof that he recognized Sam as a legitimate businessman.Investing Against the Herd  “Knowing the numbers” means having the discipline to listen to them—even if they’re not telling you what you want to hear. ~Sam ZellLike the authors of Blue Ocean Strategy, Zell prefers to invest where there is little competition. Bidding wars are expensive. Succeeding in areas where others are fearful means that the investor must know their stuff. Attention to detail, mastery of numbers… these are areas that Sam and his team have mastered over the years.Later, as investment real estate opportunities became scarce, Sam found himself considering business deals beyond real estate. And he observed the following:  If we’ve been as successful in real estate as we have been, aren’t we really just good businessmen? And if we’re good businessmen, then why wouldn’t the same principles that apply to buying real estate apply to buying anything else? We checked the boxes — supply and demand, barriers to entry, tax considerations — all of the criteria that governed our decisions in real estate, and didn’t see any differences. So we set a goal that we would diversify our investment portfolio to be 50 percent real estate and 50 percent non–real estate by 1990. ~Sam ZellSuccess in real estate, combined with a shortage of profitable real estate investment opportunities, led Zell to explore other businesses. He looked for troubled companies where he might help. Some saw his approach as exploitation. Sam sees value in buying and creating value from others’ mistakes.Is that exploitation? No. When a turnaround artist acquires a troubled company, they’re taking a neglected asset and giving it new life. Zell wrote an article about his approach to resurrecting dead properties in 1976. The article’s title, The Grave Dancer, is the source of his often-cited nickname. Sam loves the nickname; colleagues present him with Grave Dancer-themed gifts.Devouring BooksWith the launch of ROIClear, I find myself devouring books on all aspects of commercial real estate. Articles, too. Topics include syndication, taxation, cash flow analysis, raising private money, and… biography. Well-written biographies are fascinating because we get to learn about the circumstances that shaped the subject’s life, and how the subject responds to adversity.If you are building a business, Sam Zell’s autobiography offers helpful lessons and amusing anecdotes. Highly recommended.",
      "url": " /blog/2020/02/06/sam-zell-solves-business-puzzles/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2020-02-03-opportunity-community-manager-at-bridgetown-partners": {
      "title": "Opportunity&amp;colon; Community Manager at Bridgetown Partners",
      "content"	 : "  Do you want to spend the rest of your life selling sugared water, or do you want to come with me and change the world?   ~Steve JobsSteve Jobs posed the above question to an executive at Pepsi while recruiting him to join Apple. That was in the 1980s. Apple’s history is well known.Bridgetown Partners is hiring a Community Manager (CM) to help with the growth of our events and publications. This is a part-time, independent contractor position, mostly remote, with some on-site work (in Los Angeles) for meetings and events. The position could evolve into full-time depending on the growth of the community and the performance of the CM.Every member of the Bridgetown Partners team is helping to improve the world. The CM will be one of the drivers of improvement.Smart People, Growing TogetherOur community philosophy: When smart people challenge each other to grow, great things happen. Our team spent two decades building a solid reputation in Chicago’s tech community. (See: How to Grow a User Group and Successful Companies Are Built Around Communities). We intend to duplicate (and exceed) that track record here in Los Angeles.The Community Manager will be a critical part of the team that builds the Bridgetown Partners community in LA.ResponsibilitiesDuring a typical month, the CM might be engaged in the following:  Interacting with Bridgetown members through multiple channels: Face-to-face, online video conference, social media, and email.  Scheduling community members for presentations and interviews with BizDay.LA and related events.  Interacting with commercial property owners, helping them to move through the acquisition process.  Brainstorming ways that Bridgetown can deliver value for community members &amp;amp; clients.  Writing blog posts that promote our groups and events.  Managing social media feeds (like Twitter) for our groups and events.Ideal CandidateThe ideal candidate will fit the following description:  Self Starter - Capable of working remotely to produce outstanding results with minimal supervision. Runs through walls to get things done.  Team Player - Works well with other members of the Bridgetown Partners team. Communicates well, both orally and in writing. Shares information with team members via email, Slack, and other collaboration tools.  Strategic Thinker - Understands how the CM position fits into Bridgetown’s big picture. Demonstrates understanding by personally taking action where needed.  Aggressive Learner - Currently uses social media tools like Twitter and Facebook. Learns and creates new ways to engage the community with social media tools.About Bridgetown PartnersTo learn more about Bridgetown Partners, visit:  BridgetownPartners.com - company website.  BizDay.LA - an event that we created Jan2020. Bridgetown collaborated with other companies and launched in eighty-three days, from start to finish. The pace was exhilarating. Next step: To grow BizDay.LA into a media engine. The CM will play a critical role in shaping that media engine.  RayHightower.com - CEO’S personal blog.To ApplyTo apply for the position, email a PDF of your resume to careers@bridgetownpartners.com, and include the words “Community Manager” in the subject line. We look forward to hearing from you.",
      "url": " /blog/2020/02/03/opportunity-community-manager-at-bridgetown-partners/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2020-01-27-intelligent-investors-real-estate-conference-2020-recap": {
      "title": "IIREC 2020 - Recap",
      "content"	 : "One reason to attend conferences: To discover trends while we still have time to be on the cutting edge. Over 400 trend-spotters gathered in downtown Los Angeles for this weekend’s Intelligent Investors Real Estate Conference. This post offers a snap-shot of the event.Event SummaryIIREC2020 was an amazing collection of investors and service providers, coming together to learn and to teach. Beyond the learning, a few people that I chatted up during the hallway track (see below) shared their approach to problems that real estate investors are uniquely posistioned to attack.Every attendee was exposed to tools that we can use to deliver better value for our stakeholders: Investors, residents, tenants, service providers… every stakeholder wins.Where are Investors Investing?Where are investors investing? Two ways to answer that question: By geography, and by asset class. The IIREC organizers gathered informal data via a wall-sized map and a stack of sticky notes, seen below.Geographically, IIREC attendees appear to be focused in the Southern US and on the Atlantic and Pacific coasts. The southern trend fits with my intuition, but strong interest in the coasts surprised me. My conversations with other real estate investors have led me to believe that money is moving away from the coasts due to the high cost of entering deals.Lesson learned: It’s important to offset intuition with data.What about asset classes? From the chart below, more investors are focused on multi-family than any other asset class. Office deals appear to be less attractive.Rich Panels &amp;amp; PresentationsPresentations from REI industry leaders were rich with learning and insight. Here are a few snippets.      Macroeconomics: No investor invests in a vacuum. Millennials  are less inclined to purchase single family homes because they have high college debt and they prefer the experience of travel vs putting down roots. Therefore, investments in multifamily rentals are likely to do well.        Retail Apocalypse: Retail investors fear Amazon (rightly so). Fear reduces competition, and therefore opportunities are surfacing. Grocer-anchored retail centers are a favorite.        Opportunity Zones: OZs offer another way to shield capital gains while helping to stimulate values in OZ areas.        Charts. If you need to make a decision and the data is available, make a chart. Charts give us clarity. This approach has served Bob Norris for decades.        Recession-Resistant RE: Tough to find when Wall Street and the large private equity firms compete for assets by over-paying. It’s great to sell to them, but what do you do next?  Hallway TrackBeyond presentations and panels, much of the learning at IIREC happened in between the scheduled sessions. Conversations with other professionals can encourage us to think about challenges in bold new ways. For example…  More than one attendee told me about their plans to attack homelessness with manufactured housing. And it’s not just about having a place to live. Some owners are providing job training and career counseling on-site.  Multiple large-scale owners have properties dedicated to former prisoners. Once a person has paid their debt to society, it’s helpful for those on the outside to provide means for re-entry into society. Otherwise, recidivism rates soar.  Properties dedicated to newly emancipated foster youth. What happens to a foster child when they reach the age of eighteen? They’re aged out of the system. Humans crave community support. If positive support is not forthcoming, an 18-year-old might fall in with people who are less-than-helpful to society.Smart multi-family investors are not just providing shelter. They’re offering services that ideal residents find valuable: adult literacy, after-school programs for kids. In many cases, business leaders can solve problems faster and more effectively than governments. The best capitalists are service-oriented, too!ConclusionMy conference calendar consists mainly of tech-focused events where I’ve built a solid network over the years. IIREC was interesting because I didn’t know any of the other attendees prior to the conference. Launching Bridgetown Partners has given me an opportunity to expand my service to others through my professional network. Let the connecting begin.To the IIREC2020 organizers: Thank you for creating a powerful event!",
      "url": " /blog/2020/01/27/intelligent-investors-real-estate-conference-2020-recap/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2019-12-28-google-home-mini-for-free": {
      "title": "Google Home Mini for Free?",
      "content"	 : "Interesting offer, received via email today. Google is offering a “free” Google Home Mini to users of the Spotify music service. All you have to do is connect your Spotify account to your Google account. And then Google will send you a free listening device equipped with voice recognition and artificial intelligence.A free listening device for the home.What Does This Mean?What does it mean when companies give away the hardware for free?A wise person once said “if you’re not paying for the product, then you are the product.”Trade OffsHumans have made this trade-off before. For example, television survived and grew through commercials. The offer from the TV networks: Sit through these advertising jingles promoting soap, the latest car, or pharmaceuticals and we’ll give you an hour of entertainment. We’ve all traded our time and attention in exchange for entertainment before.Why is the Google offer different?",
      "url": " /blog/2019/12/28/google-home-mini-for-free/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2019-11-04-make-big-plans": {
      "title": "Make Big Plans",
      "content"	 : "  Make no little plans; they have no magic to stir [the] blood and probably themselves will not be realized. Make big plans; aim high in hope and work, remembering that a noble, logical diagram once recorded will never die, but long after we are gone be a living thing, asserting itself with ever-growing insistency.  ~Daniel BurnhamChicago + San FranciscoBurnham is known as a pioneer of the Chicago school of architecture. The Great Chicago Fire of 1871 leveled most of the city, giving architects a clean slate to create new buildings of concrete and steel. People called the new buildings skyscrapers. Although Burnham’s quote may have applied to Chicago, his words fit any plan that requires significant human effort.Example: The San Francisco Bay-Delta Model shown in the photo at the top of this post. The model fills an entire 1.5-acre warehouse in Sausalito. It’s a 3-dimensional concrete + water representation of Bay Area water dynamics. Walking the model, you feel like a giant hovering over the entire Bay.Make big plans.The Bay Area ModelThe book Zero to One was my first introduction to the Bay Area Model. In the early 1950s, local planners were concerned about their ability to provide water for the growing population. A self-trained engineer named John Reber proposed a solution for the water problem, including a pair of dams for the area. Reber promoted his plan so effectively that the US Army Corps of Engineers built the Bay Area model to test it. Reber’s plan was tested on the physical model, and it was proven to be infeasible.Was Reber’s plan a failure? Maybe on a surface level. But the model had already been built, so other plans were tested. Some of those ideas worked, and they were put into place. Reber’s audacious plan caused the building of a physical model where scientists and engineers could test dams, dredging, and emergency responses to oil spills before spending money on huge civil engineering projects. Reber’s vision planted the seeds of success for future projects.By the 1990s, computer simulations grew powerful enough to replace the physical model. Today’s scientists run software simulations on supercomputers packed with GPUs. The physical model serves as a tourist attraction and a source of inspiration for big thinkers. Public tours are available as of this writing.Plans vs Planning  Plans are worthless, but planning is everything.  ~Dwight D. EisenhowerPlans do not always work out as expected. Building the Bay Area model yielded unexpected benefits, as described above.ConclusionLaunching Bridgetown Partners has caused me to consider many options for the growth of the company. Part of planning involves gathering data and absorbing inspiration from other ventures whether they were successful or not.  Make big plans; aim high in hope and work…Make big plans, indeed.",
      "url": " /blog/2019/11/04/make-big-plans/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2019-10-28-zero-to-one": {
      "title": "Zero to One",
      "content"	 : "  What important truth do very few people agree with you on?  ~Peter Thiel’s contrarian questionPeter Thiel is a Silicon Valley billionaire, co-founder of multiple successful startups (including PayPal), and a venture capitalist. In those roles, Thiel asks the above contrarian question while interviewing job candidates.The question is simple, but difficult to answer because it requires the respondent to express an unpopular opinion. As observed in the book Zero to One, courage is less common than genius.Successful ContrariansA good answer to the contrarian question might look like this:  Most people believe in x,but the truth is the opposite of x.Answer the question well, and you might launch a  successful enterprise. For example:      1970s: Most people believed that computers were big, mysterious devices that belonged in glass data centers. Bill Gates, Steve Jobs, Paul Allen, and Steve Wozniak envisioned a computer on every desktop. Microsoft and Apple were born.        1990s: The major search engines were a mess of advertisements and distractions. Larry Page and Sergey Brin believed that the search page should be sparse, and ads could be displayed with search results, but only if results were delivered quickly. They launched Google.        Early 2010s: Major auto makers believed that electric vehicles were impractical, and if built they could only be ugly. Tesla figured out how to deliver green results in attractive, high-performance electric cars. And now they’re solving the mass production challenge.  Most people think that new ideas are crazy. Contrarians will push ahead anyway.Zero to One: ExplainedThe author explains the Zero to One concept with the following chart.Moving from Zero to One (vertical) means creating the first version of something useful while others are unable to see the vision. Moving from 1 to n (horizontal) means creating more copies of something that works.For example, making typewriters in the year 1970 would be an example of horizontal progress because typewriters were common in that year. But creating the first word processor (Wang, IBM DisplayWriter, etc.) was a vertical move (zero to one) because word processors were unknown until then.Taking a company from Zero to One is hard because it involves creating something that has never been seen before. At the same time, payoffs are huge.Building Companies Using Zero to OneWhat work is required to take a company from Zero to One? As a first step, the author offers a company-building version of the contrarian question:  What valuable company is nobody building?The book goes on to share seven questions that every business must answer in order to successfully navigate from Zero to One:  Engineering: Can you create breakthrough technology instead of incremental improvements?  Timing: Is now the right time to start your particular business?  Monopoly: Are you starting with a big share of a small market?  People: Do you have the right team?  Distribution: Do you have a way to not just create but deliver your product?  Durability: Will your market position be defensible 10 and 20 years into the future?  Secret: Have you identified a unique opportunity that others don’t see?In recent years, many green energy startups launched with good intentions. However, they were unable to differentiate themselves from competitors and unable to deliver real value to customers. They did not have solid answers to the above questions, and they failed. Tesla, on the other hand, entered the market with solid answers for the set of questions. Therefore, Tesla has made the jump from zero to one.ConclusionLeading a company from zero to one has always been tough because customers gravitate towards products they already know. Henry Ford’s customers might have asked for a faster horse. However, progress depends on the courage of leaders who are willing to embrace the unfamiliar. Choosing the unfamiliar path, wrestling with the contrarian question, and executing well… that’s how to move from Zero to One.",
      "url": " /blog/2019/10/28/zero-to-one/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2019-10-21-sidecar-ipad-as-a-second-display": {
      "title": "Sidecar&amp;colon; iPad as a Second Display",
      "content"	 : "Apple’s latest laptop operating system, macOS Catalina, includes a feature that took me by surprise: Sidecar. Let’s say that you’re working in a coffee shop and you need additional screen real estate. Sidecar will let your iPad function as a second display.Pleasant DiscoveryI stumbled across Sidecar right after upgrading to Catalina. Looking through System Preferences, I saw an unfamiliar icon next to Displays. Clicking on the new icon revealed Sidecar. The name and the logo are perfect; Mac users will immediately know what to do.What About Duet?Like many readers of this blog, I was a Duet user. Duet is still useful for users who need MS Windows or Android support. Plus, competition between Duet and Apple will encourage both teams to keep innovating.Real World ExperienceSidecar crashed during my first few experiences with the feature. Fortunately, the latest macOS updates seem to be stable.Try it out!",
      "url": " /blog/2019/10/21/sidecar-ipad-as-a-second-display/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2019-10-15-open-source-in-north-carolina": {
      "title": "Open Source in North Carolina",
      "content"	 : "Over 5,000 tech enthusiasts attended the All Things Open conference in Raleigh, NC this week. The topics were rich: AI, IoT, devops, UXD, developer tools, burn-out, technical leadership… what an eclectic collection to choose from!The organizers invited me to present Raspberry Pi is a Gateway Drug for GPUs. Slides from the talk appear below…  Questions from the audience reflected their varied backgrounds: developers, designers, entrepreneurs, and general open source hardware enthusiasts. Learning happens when ideas are freely exchanged by groups like this.Thanks Todd Lewis, Danny PerezCaballero, and all of the AllThingsOpen organizers for creating a great event!",
      "url": " /blog/2019/10/15/open-source-in-north-carolina/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2019-04-26-parallelism-and-jetson-nano-at-indycode": {
      "title": "Parallelism, Raspberry Pi, and Jetson Nano at IndyCode()",
      "content"	 : "Exciting things are happening in the world of parallel programming. The organizers of IndyCode() invited me to share some updates with their audience this year. Thank you Ken Versaw, Lois Versaw, and the entire team of organizers for having me on stage.Slides from the talk appear below.ResourcesIf you’re interested in the tools I used to develop the talk and the experiments, jump ahead to slide number 67.Feel free to post here if you would like to have a discussion about the Jetson Nano, parallelism, or related topics. Thanks!",
      "url": " /blog/2019/04/26/parallelism-and-jetson-nano-at-indycode/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2019-03-28-nvidia-gpu-technology-conference-2019": {
      "title": "Nvidia GPU Technology Conference 2019",
      "content"	 : "  What do people do when they have a terabyte of data coming in every day? They ignore it, because they know there’s another terabyte coming in tomorrow. Pretty soon, they’ll be infinitely behind!~Jensen Huang, CEO of NvidiaThe best humor contains a kernel of truth. Jensen Huang shared the above observation during his keynote at Nvidia’s GPU Technology Conference last week in San Jose, CA. The 9,000-person audience laughed knowingly!Every industry has been hit by a tsunami of data, a tsunami offering advantages and challenges. Advantage: The volume of data means we can quantify our work and our decisions like never before. The challenge: Turning data into actionable information takes work. GTC 2019 was a gathering for people exploring ways to meet the challenge. This article offers a summary of the event.GPUs: Quick HistorySkip this section the history is already familiar to you.The idea of a graphical processing unit has been around since at least the 1970s. For quality graphics, we need matrix mathematics performed at a high rate of speed. It made sense to delegate that work to specialized hardware so that the CPU can focus on general tasks. GPUs grew in popularity during the 1990s as personal computer prices dropped low enough to make them attractive to gamers. Gamers always want more power, so PC companies competed to meet the demand.Any problem that can be expressed with matrix math is a candidate for GPU acceleration. Hardware companies began to pursue new markets for their rapidly improving GPUs, including:  Geology. Especially petroleum exploration. Sound waves are sent into rock formations, the echoes are recorded and displayed as images rendered by GPUs. Deposits of oil, minerals, water, and other resources are found this way.  Autonomous driving. GPUs store information about the cars on the road as entries in a matrix. From there, GPUs provide data to enable decisions that keep people safe on the road.  Medical imaging. Anything involving imaging is ripe for acceleration by GPUs.  Gaming. Faster GPUs make the gaming experience more realistic. And when the gamers demand more performance, everybody wins.  Entertainment. The current crop of GPUs make a new level of realism possible at an ever decreasing cost.GPU ROI Example: PixarJensen’s keynote included an ROI chart for one of Nvidia’s customers, Pixar.Highlights from this ROI example:  RTX is Nvidia’s Ray Tracing Accelerator, based on their GPU technology.  Pixar spent 38 hours and $250,000 to render a particular scene with their old system.  With the newer, faster Nvidia RTX Server, Pixar can render the same scene in 6 hours at a cost of $30,000.  The power savings over five years is enough for Pixar to buy another RTX Server.Faster turnaround at a lower cost. Enough to make any CFO smile.Learning With IntentGTC is expensive. Therefore it was important for me to have a clear purpose before setting foot in the door. Further, GTC offers depth across a wide spectrum of material… overwhelming for anyone who tries to digest everything at once. Given these constraints, I only registered &amp;amp; paid for those portions of the conference that met my needs. My pre-conference objectives:  To get some hands-on exposure to deep learning. I’ve read articles and watched presentations on the subject. Reviewed a book, AI Superpowers, which describes how deep learning will change our planet socially and economically. Enough study, time to get the hands dirty.  To learn more about the problems being solved by GPUs. I knew about medical imaging and autonomous driving. What about new solutions for people in business and other fields?  To figure out how my 8th Light colleagues and I might use GPUs and parallelism to solve problems for current and future clients. Parallelism has fascinated me for years, and my interest grows as the price barrier continues to fall.  To meet people in the GPU space, to learn from them, and to (perhaps) add value to their work. One never knows how people might help each other.  To let serendipity happen, and to allow myself to be surprised. This is my favorite part of any conference - learning things that I didn’t know I didn’t know.Hands-on With Deep LearningDay one of my GTC experience was spent in a full-day deep learning, computer vision class. The class was led by Alex Qi, an Enterprise Solutions Architect with Nvidia’s deep learning team. The instructor led us through five exercises, each building on the previous one. Special thanks to Mariofanna Milanova, professor of AI and computer vision at the University of Arkansas, who helped with a particularly thorny exercise. Key take-aways:  Models that are trained against a large number of examples will make better predictions than models trained against fewer examples. Experience is a great teacher with humans and with neural networks.  The convolution integral that was taught at universities decades ago is alive and well in convolutional neural networks. It’s always cool to see the old concepts at work.  Learning, in a neural network, is a non-linear process of forward and backward propagation. Remarkably like human learning.  Repetition in learning makes a difference, with humans and with deep learning networks.One challenge: Each student was only allowed to spin up one exercise (including one Jupyter Notebook and one cloud instance) at a time. This makes sense for financial reasons. Why spend money for multiple instances when the student is only working on one exercise at a time? However, some students (like me) learn best in a non-linear fashion. We bounce back and forth between the examples absorbing information from multiple sources until it clicks.But the linear, lock-step, one instance at a time approach forces the student to do the following if they learn by bouncing around…  Shut down the current instance, and wait (typically 5-10 seconds) for the shutdown to complete.  Spin up the second instance, and wait (typically 5-10 seconds) for the spin-up to complete.That delay is a killer. Train-of-thought gets lost and learning is diminished. Linear learning is too slow, especially in a world of parallelism.Fortunately, the DLI instructors were excellent. Even with the cloud instance issues, the professionalism of the instructors turned the class into a good use of time and money.The Jetson Nano SurpriseThe Jetson Nano (shown at left in the photo) is a single-board computer that’s a little bit larger than a Raspberry Pi (at right). The Nano has four ARM cores, 128 Nvidia GPU cores, it runs Ubuntu Linux, and it sells for $99.During the Nano announcement, I immediately jumped on Amazon, Element14, Ada Fruit, everywhere looking for a way to buy that board!  No such luck at the time; too soon! Fortunately, Nvidia had the boards for sale right outside the auditorium after the keynote. Plenty of Jetson Nano inventory for everyone to go away happy.Wouldn’t it be cool for Nvidia to offer future Deep Learning Institute courses on the Jetson Nano instead of being dependent on a cloud provider’s reliability?Jetson Nano is especially attractive because it runs the entire CUDA-X suite of GPU applications. I am currently putting my board to the test, and you’ll see a post on this blog very soon.Exhibitors: Solving Real-World ProblemsEvery major computer hardware player was represented at GTC: IBM, Lenovo, Dell, HP, Cisco. Every major cloud player was present: Amazon, Google, Microsoft. Absent: Apple. This struck me as strange because Apple uses Nvidia GPUs in their high-end products.Interesting note re laptop operating systems: Most attendees and exhibitors were running Microsoft Windows. Ubuntu Linux was the second most-dominant operating system, followed by macOS. Maybe my judgment is skewed because I have attended mostly web and mobile development conferences in recent years, where 95% of the attendees use macOS. Looks like powerful things are happening in Redmond, Washington. Especially in the GPU space.Also on display: Jetson Nano, configured as a JetBot. Check out the video:In the video, the Jetson Nano “sees” the edge of the table surface and other obstacles, and it avoids them. The JetBot learned how to identify edges and obstacles through a deep learning algorithm running on the Nano. Nvidia made all of the software for this demo open source. Check out the GitHub repo for details: https://github.com/NVIDIA-AI-IOT/jetbot.Incubating and InvestingNvidia realizes that they’re selling picks &amp;amp; shovels to gold miners, and they’ve taken steps to invest in those ventures they consider promising. Nvidia Inception is an incubator, and Nvidia GPU Ventures invests money with select ventures.Dinner With StrangersThe most valuable part of any conference for me: Meeting people. Listening to people. Learning from people.GTC took the networking a step further by offering a special program: Dinner With Strangers. Go to a booth and sign up for dinner with a bunch of people you’ve never met before. In addition to software developers and engineers, I met entrepreneurs, investment bankers, VCs, private investors, and a few people who were just wondering whether opportunities in the GPU market are for real. Next time I make it back to GTC, I will sign up for Dinner With Strangers on day one.Academic PostersAcademic posters filled the hallways between the exhibit hall and the lecture rooms. There wasn’t enough time to review all of the posters. But the ones I saw covered an amazing level of detail in a tiny space. GTC awarded $5,000 to the creator of the best academic poster, determined via voting by the conference attendees.ConclusionIf you are interested in GPUs, parallelism, or any field that can benefit from the two, then I would encourage you to explore Nvidia’s GPU Technology Conference. Look at the agenda in advance and decide whether you want to attend the sessions, DLI workshops, or just the exhibits. The exhibits alone are worth the trip, especially when you consider the people you meet in the process. And be sure to sign up for Dinner With Strangers. Congrats, Nvidia, on a well-executed event.",
      "url": " /blog/2019/03/28/nvidia-gpu-technology-conference-2019/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2019-03-11-ai-superpowers-by-kai-fu-lee": {
      "title": "AI Superpowers by Kai-Fu Lee",
      "content"	 : "  Deep learning will eliminate many jobs that were once considered safe from automation. White collar, blue collar… every profession will feel the impact before the year 2039.Machines powered by artificial intelligence have excelled at games for decades. IBM’s Deep Blue defeated chess champion Garry Kasparov in 1996. Alphabet’s AlphaGo defeated world champion Go player, Ke Jie, in 2017.Game-focused AI is highly specialized and mostly ineffective in in other areas. What about general purpose AI, software that can mimic human intelligence and make human-like decisions? What about applications beyond games?Dr. Kai-Fu Lee examines these questions in his book, AI Superpowers: China, Silicon Valley, and the New World Order. Lee draws on his background as a pioneering AI researcher and successful entrepreneur to explain why certain subsets of AI produce results, and how readers of the book might benefit.Rules, Neural Nets, and Deep LearningIn their quest to mimic human intelligence, AI researchers in the 1980s pursued two main paths.      Rule-based systems. Also known as symbolic systems or expert systems. Long chains of if-then-else conditions. In order to build a rules-based system, the developer must have access to subject matter experts with intimate knowledge of the problem domain. And then they must work arduously to predict every possible stimulus and response. Broad, unpredictable domains are more difficult to handle this way.        Neural networks. Rather than try to think of every possible scenario in advance, the developer exposes the neural net to a wide variety of scenarios that force the system to “learn” the desired behavior over time. For example, when teaching a neural net to recognize a picture of a cat, the developer might show the system a large number of cat pictures (labeled “cat”) and a large number of pictures without cats (labeled “not-cat”). After enough iterations, the neural net learns how to classify the photos correctly.  Neural networks fell out of favor in the 1990s because computer hardware was not powerful enough to make them work well. However, the technology has recently re-emerged under a new moniker, deep learning networks.The most advanced deep learning networks learn from each other. For example, AlphaGo Zero, a newer version of the system that beat the human Go champion, learned to play the game by competing against other instances of itself. As with humans, the toughtest competitors emerge from the fiercest battles.Deep Learning Re-EmergesOf all the AI subsets, Lee believes that deep learning will generate the largest ROI in the next few years. His belief is based on decades of experience and these observations: Today, our computers are powerful enough and our algorithms are good enough.Advancements in computer vision and speech recognition have given our machines new ways to collect massive amounts of data. Cameras are cheap and ubiquitous. Speech recognition is so inexpensive and so good that Amazon/Google can give it away for (almost) free and turn a profit when customers buy goods through the voice interfaces. And let us not forget the data. Deep learning needs massive amounts of data in order to work. Data collected by so many cameras and microphones is more valuable than petroleum.Deep Learning and Human CareersDeep learning will wreak havoc with careers. Human jobs that require pattern recognition will be replaced by deep learning tools. For example:      Driving. When Lee was in graduate school, most researchers believed that we would consider a computer “intelligent” if it could drive a car. Over time, our scientists reframed the car driving problem as a challenge involving pattern recognition and appropriate responses. And while better algorithms were being developed, the price-to-performance ratio of computer hardware continued to improve. For safety reasons, today’s self-driving cars must have a human back-up driver. But full autonomous driving is within our grasp.        Law. As recently as a few decades ago, the newest lawyers on a legal team might be assigned the task of discovery, sifting through mountains of paper documents looking for strings of words relevant to the case. This pattern recognition problem is better handled by a deep learning system that reads flawlessly without getting tired. A character from Shakespeare advised his companions to “kill all the lawyers.” Deep learning would be a happier alternative for most members of the bar.        Medicine. Physicians who practice radiology spend years in medical school developing their skills. The experienced eyes of a radiologist can tell the difference between a life-threatening growth and something benign. Of course, this is another example of a pattern recognition problem. A computer vision algorithm that can accurately identify faces in a crowd can also scan x-ray images for health issues. Further, the algorithm can draw on every piece of medical information stored in any shared database on the planet, in an instant. And the algorithm never gets tired.  Bottom line: Deep learning will eliminate (or drastically alter) many professions that were once considered safe from any sort of mechanical automation. Lee predicts that 40% of jobs worldwide will be displaceable by deep learning and related technologies by 2039.Deep Learning in ChinaAs the founder of a VC firm operating in China, Lee offers some interesting thoughts about how Chinese companies will perform in an era of deep learning.Deep learning thrives when given two key resources: Processing power and large amounts of data. The processing power is here, today. But data can be tougher to get, especially in the United States where privacy concerns are part of the culture.But in China, the data required to train deep learning algorithms is plentiful and largely untethered by privacy laws. Algorithms designed to learn from Chinese consumer behavior have plenty of data - a big advantage. Lee shares examples of companies, based in China, that were once considered imitators of their US-counterparts. But in most cases, the Chinese company has grown larger than the US company it formerly emulated, thanks to deep learning and a mountain of data.People Displaced by Deep Learning? What’s Next?Revisiting the concern about displaced careers: Since we know that the wave of deep learning is coming, what should we do?Some people will argue that we’ve been through changes like this before. Whenever humans develop new, labor-saving technology, new jobs emerge that we never would have dreamed of before. How many readers of this blog work in careers that didn’t exist twenty years ago?Lee argues that the deep learning wave will be different in two ways:      Speed. Never in human history have we displaced 40% of our jobs, worldwide, in the span of a few decades.        Range. When farmers were displaced by farm automation, things worked out because that was during the industrial revolution, which opened factory opportunities for the former farm workers. One segment reduced in size as a different segment emerged. But this time, deep learning will touch every economic level, blue collar and white collar, college educated and trade-school grad.  Even deeper, so many of us, especially in the USA, define ourselves by our careers. What will it mean to be human when career-based definitions have evaporated?Lee observes that the shift may give us an opportunity to connect with a uniquely human gift in new and positive ways. Lee believes that we will re-connect with our ability to love.Lee shares more about the path that led to this way of thinking in the book.About Kai-Fu LeeFor deeper insight into AI Superpowers, it might be helpful to know more about the author.Dr. Kai-Fu Lee is a PhD computer scientist and founder of Sinovation Ventures, a $2 billion technology investment firm with offices in Beijing, Shanghai, Shenzhen, Seattle, and Silicon Valley.Lee was born in China. He was sent to the USA at the age of eleven because his mother wanted him to be educated beyond the rote memorization curriculum that was available in the town of his birth. To maintain his Chinese writing skills, Lee’s mother required him to write to her weekly in Chinese. And she would return each of his letters to him with corrections. Motherly encouragement paid off. Today, Lee is fluent in Chinese and English and he flows easily between the cultures.Lee holds degrees in Computer Science from Columbia University (A.B.) and Carnegie Mellon (PhD). He pioneered speech recognition research at Apple. Later, he served in technical leadership positions at SGI, Microsoft, and Google. He founded Sinovation Ventures in 2009.ConclusionAI Superpowers offers insights that go beyond technology. The author considers economic, social, and emotional concerns that are rarely discussed in a business book. Anyone interested in AI, business, or the interaction between Chinese and American industries will find the book valuable.",
      "url": " /blog/2019/03/11/ai-superpowers-by-kai-fu-lee/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2019-02-27-quantum-computing-at-caltech": {
      "title": "Quantum Computing at Caltech",
      "content"	 : "  If you think you understand quantum mechanics, then you don’t understand quantum mechanics.~Prof Richard Feynman, CaltechThe Caltech Entrepreneurs Forum offers a blend of tech + business on Saturday mornings, roughly once per month. The February 2019 session featured quantum computing enthusiasts from a variety of disciplines:  Quantum Physicist: Prof Maria Spiropulu of Caltech  Corporate Research Scientist: Joe Latone of IBM  Venture Capitalist: Yipeng Zhao of Embark Ventures  Entrepreneur: Alireza Shabani of Qulab  M&amp;amp;A Specialist: Andy Tomat of Four PillarsPurpose of the gathering: To wrestle with questions in the field of quantum computing.Physicists and Film MakersThe moderator, Andy Tomat, began the session by asking if there were any physicists in the room. A few hands shot up (out of roughly 80 people in the room). After a few more questions, it became clear that the audience contained people from fields that one would not immediately connect with quantum computing. For example, I happened to be sitting next to a film-maker. He was attending the session because he enjoys science and he’s looking for the next big thing in realistic rendering.Next, the moderator reviewed some QC terms, summarized in the chart below…KeynoteDr. Maria Spiropulu, professor of physics at Caltech, gave the keynote. The presentation began with the obligatoray chart of Moore’s Law, but with a twist. The exponential curve was extended to include improvements likely to come from quantum computing.Spiropulu’s talk covered quantum clocks, quantum keys, and a list of three-letter government agencies that are all active in the QC world.The keynote ended with a description of the Quantum Economic Development Consortium (QEDC), a partnership between the US government and SRI corporation that aims to expand U.S. leadership in quantum R &amp;amp; D.PanelistsThe keynote speaker was joined by three panelists, and then the group took questions that the audience had submitted in advance. A few highlights from the panel:  IBM is offering web access to their quantum hardware and software for free. Smart move by IBM. The data they gather by observing early quantum programmers will certainly be worth more than the cost of operating their quantum machines and simulators.  Embark Ventures focuses mainly on cyber security and infrastructure.  Being at a QC event probably means that they see the puck headed toward quantum.  Some argue that it’s too soon to reap benefits from quantum computing.  But Alireza Shabani, CEO of Qulab, sees things differently. His company is using quantum to simulate molecules, very difficult for classical computers and extremely useful to companies in the pharmaceutical industry.ConclusionBottom line: This month’s Caltech Entrepreneurs Forum was a magnet for talent on the cutting edge of quantum. Looking forward to more.",
      "url": " /blog/2019/02/27/quantum-computing-at-caltech/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2018-06-11-macbooks-lasers-art-science": {
      "title": "MacBooks, Lasers, Art, &amp; Science",
      "content"	 : "Nerdy tattoos. That’s how one person described the laser-engraved symbols on my MacBook. Stickers are fine, but sometimes you want to try something new. Besides, lasers are cool!If you would like to laser-engrave your laptop, here’s a procedure that works. There’s also a brief description for each of the symbols engraved on this particular MacBook.WarrantyDoes engraving void Apple’s warranty? I have no idea. The laser doesn’t cut very deep. But if you’re really concerned about the warranty, you might want to speak with Apple.PlanningI spent two months choosing and positioning the symbols. Laser engraving is expensive and permanent, so I wanted to get it right. Here’s the path:  Listing the symbols. I started by making a list of the symbols to be considered for the engraving. Evernote was great for keeping track of everything, because you can make notes anywhere and sync the info to all devices.  Layout, first draft. Paper and pencil. Just to get a feel for the layout. Key question: How can symbols from math, science, faith, business, athletics, and community service all fit together?  Layout, intermediate drafts. Back to Evernote. I divided the surface of the MacBook into six sections (left, middle, and right on both upper and lower levels), and I gathered the symbols into groups that seemed to work together. In time, I settled on a pattern: Left is mostly science, with some business woven in, while the right side is mostly business with some science woven in.  Layout, laser-ready. I chose Affinity Designer because it can generate files in a variety of vector formats (.ai, .eps, .tiff) and  an ultra-smooth vector file would ensure a high-quality finished product. Unless you already own Adobe Illustrator, Affinity Designer is an inexpensive and effective way to go.Laser-Ready LayoutTo align everything perfectly, I bought a template from Etsy. Some of the packages include templates for multiple devices, just in case you get the engraving bug and you can’t stop with one laptop.And even after everything was positioned and templated, I let the design rest for a week before taking it to the engraver. Because engraving is permanent!Choosing an EngraverHow does one choose an engraver for an expensive piece of electronic equipment? I found several engravers on the web, and visited a few in person. In the end, I chose Chicago Award Source.CAS uses an Epilog Laser machine. Beyond equipment, the engraving team needs to care deeply about alignment and attention to detail. The CAS team (Firoz, Christan, and Jenna) did an outstanding job with my engraving. Christan and Jenna were meticulous with the laser machine, double- and triple-checking the alignment. I emailed them a PDF before my visit, and they did a practice run on scrap acrylic. The acrylic aligned perfectly with the MacBook. It was clear that I had placed my trust in the right engraver.Symbol DescriptionsHere’s a description for each of the symbols, starting with the top-left corner and moving down, and then left to right.  Bloch Sphere. Graphical representation of a qubit, the quantum computing equivalent of a digital computer’s bit. Quantum computing is fascinating largely because we know so little about quantum mechanics.  Full-wave rectifier. The fundamental circuit of every computer power supply because it’s the first step in turning alternating current (from the electrical outlet) into direct current that our computers can use.  Quantum Composer. From IBM’s quantum simulator. That was the state of quantum simulators in June 2018. If you’re reading this post far in the future, all of this may change.  Conic sections. The trajectory of a baseball thrown by a player and the path of a planet revolving around a star can both be described by the mathematics of conic sections.  RubyCaribe. An idea for a tech conference to be held in the Caribbean. Market realities kept me from launching this as early as I would have liked. You could say that I’m in the middle of a pivot on this one!  Warped space-time. Graphical representation of space-time being warped by a massive, spherical object. Physicists theorize that what we perceive as gravity is actually the warping of space-time. The math supports the theory.  Unit Circle. Graphical representation of Euler’s identity, which can be proven with series expansion.  Apple.  Feynman Diagram. Richard Feynman was a professor of physics at Caltech. He created these diagrams to graphically represent what happens when sub-atomic particles collide. In a Feynman diagram, time runs from left to right, and the lines show collisions and the release/absorption of energy.  WindyCityDB. WindyCityDB was a NoSQL database conference held by my team in Chicago.  H. The favicon and app icon for the RayHightower.com site.  WindyCityThings. WindyCityThings was an Internet of Things (IoT) conference held by my team in Chicago.  Maxwell’s Equations. Since light is a form of electromagnetic radiation, the reference to God’s words from the book of Genesis is fitting. I first saw science and faith tied together in this way on a poster in a professor’s office.  Eagle Scout Medal. Some of my richest life experiences are connected to Scouting, including earning the rank of Eagle as a youth.  Prioritization Matrix. This is from Stephen Covey’s book, The Seven Habits of Highly Effective People. Quadrant 2 is highlighted because if we spend our time on things that are important (but not urgent) we will avoid running around on random tasks (quadrant 1) and we will move closer to our goals.  Lipa Na M-Pesa. Swahili for “Pay with M-Pesa”. M-Pesa is a mobile payment system that is integral to the economy in Kenya. M-Pesa has achieved higher penetration among mobile users within a country than any other mobile payment system in the world.  华强北真棒. Chinese for “Huaqiangbei is awesome”. Huaqiangbei is a region within the city of Shenzhen where tech manufacturers do business. If you own anything electronic, you can bet that some of the components passed through Huaqiangbei.  Warp Drive. Physicists are researching ways to turn warp drive into reality. Two pioneers in the field: Miguel Alcubierre, theoretical physicist based in Mexico and Harold “Sonny” White, engineer and applied physicist at NASA in the USA. According to the math, it might be possible to propel a ship faster than the speed of light by warping space-time.  Blue 1647. Blue 1647 is an amazing space for makers, technologists, entrepreneurs, software developers, artists, and musicians.  8th Light. 8th Light is the software consultancy that bought my company (WisdomGroup) in 2016.  Enso. Enso is a Shotokan Karate Dojo led by Sensei Jay Nacu, Sensei Denise Nacu, and Sensei Saul Notario. Enso’s students are people of all ages, all backgrounds. The instructors have built a community based on continuous improvement and mutual respect.  WindyCityRails. The Ruby on Rails conference that my team launched in Chicago in 2008.  WisdomGroup. WisdomGroup is the technology company that I founded in 1994 and sold to 8th Light in 2016.ConclusionHopefully this post gives you enough information to engrave your own devices, if you choose to do so.",
      "url": " /blog/2018/06/11/macbooks-lasers-art-science/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2018-03-28-quick-win-with-raspberry-pi-model-3": {
      "title": "Quick Win With Raspberry Pi Model 3",
      "content"	 : "When we experiment with something new, it can be encouraging to achieve a quick win early in the process. Achieving a quick win can give us that jolt of energy we need to break through the inevitable roadblocks.This post is designed to give you a quick win with the Raspberry Pi Model 3. Points covered:  How to download and install an operating system for your Raspberry Pi.  Using SSH to control your Pi from a laptop, so you won’t need an external monitor.  Using virtual network computing (VNC) to control your Pi’s GUI without attaching a monitor.Getting the Raspberry Pi Operating SystemYou can purchase the Raspberry Pi operating system pre-installed on an SD card. Adafruit and Amazon are two retailers who sell the OS this way.Or you can download the operating system from the Raspberry Pi site. Buying the pre-installed card will save you time, but you might not get the latest versions of the software. It’s easier to keep OS images up-to-date online.Choosing an SD CardAs of this writing, the best micro SD cards for the Pi are Class 10 (indicated by the number 10 surrounded by a circle). I’ve always enjoyed success with the SanDisk Ultra Plus. Other cards might work just as well, but this is the one that has always performed for me.Depending on the configuration of your laptop, you might need an adapter to read your card.Burning the SD CardWarning: The card burning procedure could destroy your machine (yes, your laptop). The procedure uses sudo, which grants you superpowers over the machine. Please backup your laptop before doing anything related to this procedure. And then, double-check the steps as you go.There’s a GUI for burning a Raspberry Pi OS. I prefer the command line because the shell always works, while GUIs can be subject to operating system updates. Therefore, the command line method will be described here.First, grab the disk designation of the SD card.$ diskutil list/dev/disk0   #:                    TYPE NAME              SIZE       IDENTIFIER   0:   GUID_partition_scheme                  *960.2 GB   disk0   1:                     EFI EFI               209.7 MB   disk0s1   2:               Apple_HFS MacSSD            959.3 GB   disk0s2   3:              Apple_Boot Recovery HD       650.0 MB   disk0s3/dev/disk1   #:                    TYPE NAME              SIZE       IDENTIFIER   0:  FDisk_partition_scheme                  *15.9 GB    disk1   1:              DOS_FAT_32 BOOT              134.2 MB   disk1s1   2:                   Linux                   15.8 GB    disk1s2Next, unmount the SD card.$ diskutil unmountDisk /dev/disk1Unmount of all volumes on disk1 was successful$ Finally, write the extracted Raspberry Pi image to the SD card.$ sudo dd if=2017-11-29-raspbian-stretch.img of=/dev/rdisk1 bs=1mPassword:Note how the dd command writes to /dev/rdisk1 instead of /dev/disk1. I have learned, and verified through experiment, that writing to rdisk is much faster than writing to disk. The process takes 6 minutes with rdisk vs 29 minutes with disk.Why?We can observe the difference in Activity Monitor. When we use disk, the dd utility grabs a few bytes at a time, and then it writes to the output device. When we write to rdisk, the dd utility grabs the entire 4GB file and then writes it to the output device in one operation.A metaphor: Using disk is like scooping up water with a teaspoon, with lots of wasted motion. Using rdisk is like using a bucket, scooping up a huge volume of water in one swoop.Command Options for ddHere’s a quick run-through of the command options:      sudo gives you super powers.        dd is the “copy and convert” command. The letters “dd” have nothing to do with what the tool actually does. It’s just a command name. And like so many things in computer science, the name might be based on a pun.        if= specifies the input file. You can include the full path, or if the file is in your current directory, you can omit the path as shown in this example.        of= specifies the output file. We know that the SD card is located at /dev/disk so that’s where the results of this command are headed.  Note that your destination directory may differ from this one.        bs= specifies the block size used for the destination file.  Checking Progress While dd Burns the ImageThe dd command does not give any outward sign that it is making progress. That can be a little uncomfortable because it takes a long time for the command to run. Here are two ways to check progress:      Run the macOS Activity Monitor, and look for a process called dd. Watch the disk writes number as it increases. You can even sort the processes in descending order by disk writes.        In the terminal window where dd is running, hit control-T and you’ll see a progress report in the terminal window.  Once dd is CompleteWhen dd is done, you can eject the SD card from your Mac and insert it the micro-SD card reader on the Raspberry Pi. Apply power to the Pi and… it boots!Login CredentialsDefault username/password:  user = pi  pw = raspberryFinding Your Pi’s IP AddressIf you’re using a password-protected WiFi network, you will need to connect the Pi so that it can obtain an IP address.After the Pi connects to your WiFi network, it will grab an IP address using the dynamic host configuration protocol (DHCP). You’ll need the Pi’s IP address in order to control it via SSH or VNC.A few ways to find the IP address of your Raspberry Pi (you can use any one of the following):      Go into the network configuration on your Pi and see what IP address it grabbed (it defaults to DHCP).        Use the $ ifconfig command at your Pi’s command prompt. Ignore any IP address that it gives you starting with 169.n.n.n or 127.n.n.n (where n = any integer between 0 and 255).        Use a network scanner.  Using a network scanner is more fun because you get to see other devices on the network, in addition to your Pi. For our purposes, almost any network scanner will do. I like to use Fing on my Android phone, available through Google Play.Using SSH to Log InAt this point, you can try to ssh into your Pi from a laptop that’s on the same subnet. Do that right now, and you’ll get the following:~$ ssh 10.10.1.167ssh: connect to host 10.10.1.167 port 22: Connection refused~$Connection refused! Why?By default, SSH is disabled on the Pi. Here’s how to enable SSH on the Raspberry Pi.  Open a terminal window on your PI.  Open the Raspberry Pi Software Configuration Tool with the command $ sudo raspi-config.  Scroll down to Interfacing Options.  Choose SSH.  In response to Would you like the SSH server to be enabled? choose Yes.  The Pi will tell you that SSH has been enabled.Now when you try to SSH into the Pi…~$ ssh pi@10.10.1.167The authenticity of host &#39;10.10.1.167 (10.10.1.167)&#39; can&#39;t be established.ECDSA key fingerprint is SHA256:P0VM/ohkn++qSA5qRIaDqfwVdSUgjMfDaU/ubAnW5mY.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added &#39;10.10.1.167&#39; (ECDSA) to the list of known hosts.pi@10.10.1.167&#39;s password:Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7lThe programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/&amp;amp;nbsp;/copyright.Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.Last login: Tue Mar 27 04:17:08 2018SSH is enabled and the default password for the &#39;pi&#39; user has not been changed.This is a security risk - please login as the &#39;pi&#39; user and type &#39;passwd&#39; to set a new password.pi@raspberrypi:~ $Success! Of course, given the security warning, we might want to change the default password on the Pi.Gotcha: Some Non-Working VNC ClientsOnce upon a time, it was possible to use the following VNC clients on macOS:  Safari.  Finder.  TightVNC.  TigerVNC.In some cases, the missing functionality is probably intentional. I’m betting that Apple had security reasons for removing VNC capability from Finder and Safari. For TightVNC and TigerVNC, the authors may have found it difficult to navigate security restrictions in the latest Mac operating system.Fortunately, the RealVNC client works well.Download the RealVNC client and install it using drag &amp;amp; drop like many other Mac software packages.How to Install the VNC ServerHow do you install the VNC server on the Pi? Good news! With the latest version of the Pi operating system, you don’t have to. The VNC server is already installed. Of course, you will need to enable it.  To enable VNC, go back into $ sudo raspi-config (described above).  Find VNC.  Enable VNC.The steps are similar to the ones we followed to enable SSH.Using VNCTo use Real VNC  Double-click on the VNC Viewer icon.  Enter the IP address of the Pi that you want to control.  Login using the credentials given above.  You’re in!ConclusionNow that you can control your Pi without having to lug around an external monitor, you’re in a position to conduct some cool experiments.  Pi users are fortunate to be part of a large and enthusiastic community. Much success to you as you go out and make something great with your Raspberry Pi!",
      "url": " /blog/2018/03/28/quick-win-with-raspberry-pi-model-3/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2018-02-15-mob-programming-fullstack-open-source-at-8th-light": {
      "title": "Mob Programming + Fullstack Open Source at 8th Light",
      "content"	 : "  With enough eyeballs, all bugs are shallow.~Linus TorvaldsDevelopers who are hungry for knowledge will enjoy these two upcoming events:  Tue, 2/20/2018: Mob Programming, with Woody Zuill  Wed, 2/21/2018: Fullstack Open SourceBoth events will be held at the 8th Light office in downtown Los Angeles. The Mob Programming event will be filmed and refreshments will be served. Video footage may be used on cleancoders.com or in any of Woody Zull’s training material. By participating, you are consenting to the use of the footage in that context.About Mob ProgrammingPerhaps you’re familiar with pair programming: Two developers working together to solve a single problem. Mob programming takes pairing to another level. At Tuesday’s even, Woody Zuill will demonstrate how mob programming can increase the quality of code while reducing bugs.Be sure to RSVP here to get the exact address and so that we can have refreshments waiting for you. See you then!About Fullstack Open SourceOne of the best ways to ramp up in skill: Work with others who have the same goal. All developers are welcome to participate regardless of skill level.As always, you can RSVP for Fullstack Open Source here so we can order refreshments for you.See you soon!",
      "url": " /blog/2018/02/15/mob-programming-fullstack-open-source-at-8th-light/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2018-02-03-new-chapter-in-los-angeles": {
      "title": "New Chapter in Los Angeles",
      "content"	 : "Update: I moved to Los Angeles this week.Monday (05Feb2018) marks my first day as Director of the 8th Light office in Los Angeles. Special thanks to Margaret Pagel, our VP of Marketing &amp;amp; Sales, for her mentorship and for approaching me with the idea. Thanks also to my predecessor, Dave Moore, for launching the LA office and passing a well-crafted baton.Our 8th Light team delivered outstanding results in 2017, serving clients in health care, finance, insurance, real estate, travel, and high-speed hydrofoil yacht racing. We’re on track to do more in 2018.I will miss Chicago. But I’m excited about LA!",
      "url": " /blog/2018/02/03/new-chapter-in-los-angeles/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2017-11-27-huaqiangbei-in-shenzhen-china": {
      "title": "Huaqiangbei in Shenzhen, China",
      "content"	 : "Huaqiangbei (pronounced hoo-wah-chang-bay) is a place for makers of electronics, robotics, and anything tech-related. This prototyper’s paradise within Shenzhen was the primary reason for my visit to China in November 2017.Why Shenzhen?Imagine an IKEA-sized store filled with electronics instead of furniture. Not just cell phones and laptops, but the parts we use to build our digital devices: solid state components, ICs, circuit boards, and all the tools needed for assembly and repair. Double the size of the store in your mind. And then fill a neighborhood with buildings just like it. That’s Huaqiangbei.Shenzhen in One HourWired Magazine published a 1-hour video about Shenzhen and Huaqiangbei in July 2016.Key points from the video:  Twenty years ago, Shenzhen was a tiny 30,000-person fishing village. Today, roughly 12 million people call Shenzhen home.  The government of China created a deliberate plan for Shenzhen’s focus on technology. Growth like this does not happen by accident.  Shenzhen has evolved larger and faster than the central planners predicted.  Moore’s Law and the global demand for electronics played a role in the growth of Shenzhen.  Most vendors at Huaqiangbei prefer to deal in volume.  Some of the goods sold in Shenzhen are counterfeit. Caveat emptor.  Shenzhen is not just about marketplaces. There are meetups, startup incubators, and accelerators for entrepreneurs who are ready to collaborate with others and grow.  Hardware prototypes in Shenzhen can be created in record time. Faster prototyping yields faster iterations and faster learning. In the end, customers get better products.  Consumer electronics products hit Huaqiangbei a few years before theymake it to the USA.Globalization is GoodAnother reason why Shenzhen is so exciting: Globalization is good.  Opportunities in tech are too large for one nation to play a monopoly role.The Wired video tells you what to expect once you get to Shenzhen. This post will tell you how to prepare for the trip, along with a few gotchas that I encountered along the way.Passports and VisasUS citizens need a passport and a visa to visit mainland China. As of this writing, it’s possible to visit Shenzhen for up to six days without a visa, but a visa is needed if you want to go outside the city. A service like Travisa can get you a ten-year multiple entry visa for less than $200, and they’ll manage the application process for you.Flights and HotelsPriceline has consistently given me great deals on flights and hotels all over the world. I used Priceline for my Shenzhen flights and hotels. They delivered well.Mandarin for English SpeakersIf you already speak Mandarin, you will navigate well in Shenzhen. I am not fluent in Mandarin, so I relied on a few crutches:  Google Translate, available for iOS and Android. This tool rocks. I had several conversations with people speaking Mandarin where we both ran Google translate on our phones in order to communicate.  ShaoLan Hsueh gave a TED talk on the most frequently used Chinese characters, and how to recognize them. She created a course called Chineasy to teach her techniques.Astute readers will note that Google’s tools are blocked by the Great Firewall. You will need a VPN to use them.Bonus: Visit Hong KongIf you make it to Shenzhen, consider a bonus trip to Hong Kong as well. The two cities are only a short train ride apart, like riding from Midtown Manhattan to Brooklyn. US citizens can travel to Hong Kong without a visa, but you’ll still need to go through customs.If you visit Hong Kong, be sure to buy an Octapus card when you arrive. The Octopus card can be puchased at any train station. You can pay for almost anything via Octopus including public transporation and Starbucks coffee.Some people might recommend WeChat for payments in China and Hong Kong. In my experience, WeChat works fine for text communications, but for payments it’s a pain in the neck. The VPayFast service offers help for non-Chinese citizens who want to use WeChat, but the service did not work for me. Maybe I’m spoiled by the seamless convenience of M-Pesa in Kenya.ConclusionIf you are enthusiastic about open source hardware, IoT, or related areas, you will enjoy Shenzhen. Ping me when you go. Maybe we can collaborate on something!",
      "url": " /blog/2017/11/27/huaqiangbei-in-shenzhen-china/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2017-09-29-quantum-computing-at-scna": {
      "title": "Quantum Computing at SCNA",
      "content"	 : "  One purpose of a conference is to help you to spot trends while there’s still time to reap the benefits of being an early adopter. ~Brian Marick at SCNA 2013Like any new technology, quantum computing, is subject to hype, misinformation, and inflated expectations. How does a serious professional sort through the noise? By being particular about where you get information, and by seeking out experts.SCNA can help you with both.Quantum Computing, in PersonProfessor Federico Spedalieri is a 20-year veteran of quantum computing. He began studying the field as a PhD student at Caltech. Today, he is the research lead on quantum computing at the University of Southern California (USC). If you attend SCNA this year, you will hear him speak in person. You’ll have the opportunity to ask questions and interact. And your knowledge will grow.Why Quantum Computing MattersClassical computers, like the one you’re probably using to view this blog post, have taken us far. But some problems require a different approach.For example, consider drug research. Drugs are chemical compounds, made up of atoms and molecules. To simulate drug behavior, researchers must account for interactions between every proton, neutron, and electron in the drug molecule.This doesn’t present a problem for small molecules. Hydrogen, with one proton and one electron, has only one interaction. But the number of potential interactions grows exponentially as the size of the molecules increases.Classical computers bog down under the weight of an exponentially increasing number of interactions. But quantum computers, based on our observations about quantum mechanics, can handle more interactions. Quantum computers will enable drug researchers to simulate much more complicated drugs. Cures for some of our most deadly diseases may be on the horizon, thanks to advances in quantum computing.Quantum computing offers exciting answers. Learn more at SCNA.Striving Towards MasterySome folks are content to perform at their current level of skill. They deliver an acceptable level of results at work, and they’re fine. But some professionals have a burning desire for mastery. People with this burning desire to master a craft tend to gather together. To learn from each other. To challenge each other to grow.SCNA is a conference that attracts developers with a burning desire to achieve mastery in software development. To hone their skills continuously over time, and to deliver better results for clients and other stakeholders.Do you have a driving desire to achieve? Then perhaps SCNA is for you.Come to SCNAAre you a software developer looking to take your skills to the next level? Consider the SCNA conference, arriving in Los Angeles on October 27, 2017. Learn from industry leaders. Network with your peers, trade ideas, and have a great time with a room full of smart people who will welcome you. Register now. We look forward to seeing you.",
      "url": " /blog/2017/09/29/quantum-computing-at-scna/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2017-09-19-thank-you-thoughtworks": {
      "title": "Thank You, ThoughtWorks!",
      "content"	 : "Tuesday, September 12, 2017 was the last ChicagoRuby:Downtown meeting held at ThoughtWorks. Future Downtown meetings for ChicagoRuby will be held at the new 8th Light office at 25 East Washington in Chicago.Thank you, ThoughtWorks, for everything you have done for ChicagoRuby over the years!Many ThoughtWorkersMany ThoughtWorkers have served on the ChicagoRuby organizer team in the past decade. Here are the ones that I recall (feel free to ping me if I missed anyone):  Jake Scruggs (Chirb)  Joe O’Brien (Chirb)  John W. Long (Chirb)  Josh Cronemeyer (Chirb + ChicagoRuby)  Patrick Turley  Matthieu Tanguay-Carel  Michael Norton  Tim Camper  Toby Tripp  Prasanna Pendse  Sandeep Jagtap  Emily Rosengren  Sam Jacobs  Hugo Corbucci  Dexter Teng  Sarah Cnota  James Courtois  Louis Knapp  Martha Amo  Robert HilliardSpecial recognition goes to Josh Cronemeyer. Josh was the Chirb organizer who proposed the merge with ChicagoRuby back in 2009.You Are InvitedIf you are a software developer, designer, or enthusiast who uses Ruby, you should know that ChicagoRuby is a welcoming group for newbies and veterans alike. Sign up at Meetup.com/ChicagoRuby to hear about future events.Would you like to present a topic at ChicagoRuby? Contact the organizer team, led by Nicole Carpenter, through the ChicagoRuby contact form. Interested in speaking at WindyCityRails? The call for proposals is announced through the @WindyCityRails Twitter feed.We look forward to seeing you at 8th Light!",
      "url": " /blog/2017/09/19/thank-you-thoughtworks/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2017-09-07-passing-the-chicagoruby-baton": {
      "title": "Passing the ChicagoRuby Baton",
      "content"	 : "After ten years as lead organizer of ChicagoRuby, I have decided to step down. My 8th Light colleague, Nicole Carpenter, has accepted the leadership baton. Congratulations, Nicole!About Nicole CarpenterNicole is a software developer with strong leadership and organizational skills. In addition to solving hard problems for clients, she runs the ChicagoRuby hack nights and 8th Light University. She was my first choice to take over the group.History of AchievementChicagoRuby had 78 members when I assumed leadership in 2007. Since then, we have:  Grown the group to 4,200+ members.  Built a leadership team of 16 organizers.  Created several successful conferences, including WindyCityRails, now in its tenth year.  Merged with another Ruby group, Chirb (in 2009).  Hosted meetings and conferences across Chicagoland: North Shore, South Shore, Western ‘burbs, and all over Downtown.  Collaborated with tech enthusiasts in the Caribbean to launch LinuxBarbados (2014).  Joined forces with colleagues in the Python and Java communities to launch the Chicago Polyglot Mingle (2016 and 2017).  Published a blog post on how we get things done: How to Grow a User Group.Yes, our name is ChicagoRuby. But we have never limited ourselves by language or geography.Thank YouLeading ChicagoRuby has been a wonderful adventure. For example, I first met members of 8th Light through ChicagoRuby back in 2007. That meeting was the beginning of our collaboration, which ultimately led to 8th Light’s acquisition of my company. Many opportunities have come my way via ChicagoRuby. I will always be grateful.Moving forward, although my responsibilities at 8th Light weigh heavy, you will see me at ChicagoRuby events from time to time. I will continue to cheer for ChicagoRuby. To my fellow Rubyists: Thank you for the opportunity to serve.By the way…My position at 8th Light: Director of Sales. That’s a fancy way to say that I find new clients. If your company (or a company that you know) needs custom software, let’s talk. Our teams at 8th Light do a great job of keeping the client informed and in control throughout the software development process. If that approach sounds interesting to you, dash me an email and we’ll setup a time to talk. If you’re local, we can grab coffee together.  Twitter: @RayHightowerAnd… WindyCityRailsWindyCityRails happens on Thursday &amp;amp; Friday, September 14-15, 2017. You still have time to grab a ticket. As always, the presentations and the networking are outstanding. Use the discount code CHICAGORUBY for a $50 discount against the standard price. See you at WindyCityRails!",
      "url": " /blog/2017/09/07/passing-the-chicagoruby-baton/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2017-08-24-highly-effective-seo": {
      "title": "Highly Effective SEO",
      "content"	 : "If you’re promoting a site on the web, you may be curious about search engine optimization (SEO). Curiosity about SEO makes sense. If there is a way to raise your ranking in the search engines, why not do it?This post describes a highly effective way to achieve SEO without resorting to clever schemes.For Example…As of the date of this post, Googling the term chicago ruby on rails will generate results similar to the above image. Note that three of the ten results on page one are owned or controlled by the ChicagoRuby Organizer Team. I’ve tried this test on machines in multiple countries, computers that I’ve never touched before (to eliminate the influences of caching and geography). The results are consistent. How did we push ChicagoRuby’s SEO to this level?How Page Ranking WorksGoogle looks at two attributes when deciding how high to rank a site in the search results: PageRank and relevance. PageRank measures the importance of a page, determined by the number of pages that link to it (indicated by the arrows in the diagram). Each link is a vote, and important pages cast heavier votes than non-important pages. The process is illustrated in this public domain image from http://en.wikipedia.org/wiki/PageRank.Relevance (the numbers inside the spheres) measures the value of information contained on the page within the confines of the search term. The major search engines use proprietary algorithms to measure relevance.Legitimate SEOThere is nothing wrong with communicating your message in the clearest possible way. Legitimate SEO can help you with this. One place to start: Hubspot. The company offers a free online tool called Web Site Grader that measures attributes such as organization, title placement, and page structure to determine the search engine effectiveness of a site.If you want to improve something, start by measuring it.Clever SchemesClever schemes, like steroids in competitive sports, can produce short term results. But the long-term side effects are painful.Spamdexing is one example of a clever SEO scheme. Spamdexing is making a site appear to be something other than it is merely so that it can appear higher in the results. One form of spamdexing, keyword stuffing, is the act of repeating a set of keywords throughout the site in an effort to get the site highly indexed for that set of words. The stuffed words may have nothing to do with the actual content of the site. Theyʼre just there to raise the site in the rankings.Spamdexing is easily discovered and nullified by the major search engines.Other schemes include:      Link Farms – Pages designed only to link to another page in an effort to boost its ranking.        Hidden Text – Text that is colored to blend in with the background of a page. Humans canʼt see the text, but search engines can. Modern search engines can also tell when such text is invisible to humans, rendering this tactic ineffective.  The SEO and spamdexing articles at Wikipedia have more information on SEO schemes.Google, Bing, and Yahoo Are Not StupidWhy does it make sense to avoid clever schemes? Because Google and the other search engines are not stupid. Clever schemes, when discovered by the search engine crawlers, can actually lower your search ranking. In extreme cases, a search engine may remove the offending site altogether.How to Increase Your Page RankAn effective SEO strategy can be summed up as follows:      Create a great site with solid, useful content.        Give legitimate sites a reason to link to you.        Give visitors a reason to come back for more.        Track traffic with analytics.  Experience demonstrates that web sites following this strategy move higher in the rankings over time. And they stay on top longer.Note: An earlier version of this article was posted at WisdomGroup.com.",
      "url": " /blog/2017/08/24/highly-effective-seo/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2017-08-15-nantucket-or-windycityrails": {
      "title": "Nantucket or WindyCityRails",
      "content"	 : "  There once was a dev from Nantucket,Who tried to write code in a bucket.“It works” quoth the coder.Now I want to get bolder.I’m ready for WindyCityRails.You’re right. That limerick is only 80% finished and completely nonsensical!Still, you should check out WindyCityRails. The speakers are outstanding. And the opportunity to network with your fellow software professionals is something that cannot be passed up.And here’s a bonus for you. Use the discount code 8THLIGHT for $50 off of the standard conference fee.See you in September!",
      "url": " /blog/2017/08/15/nantucket-or-windycityrails/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2017-07-25-a-business-view-of-ruby-on-rails": {
      "title": "A Business View of Ruby on Rails",
      "content"	 : "If your company does anything with software on the web (sometimes called “Software as a Service” or SaaS) then you’ve already heard about Ruby on Rails. For smart people with non-IT backgrounds, this post will answer a few key questions:  What is Ruby on Rails?  Why do you care?  How can your company benefit?Note: A version of this post was originally published by WisdomGroup and re-published by ChicagoRuby.Why Ruby on Rails?Ruby on Rails helps developers write better web apps in less time with fewer errors. Time is money. Businesses measure results in currency. Rails enables developers to deliver.Ruby: The LanguageRuby on Rails consists of two main components: A programming language called Ruby, and a Web development framework called Rails. It is customary to refer to “Ruby on Rails” as simply “Rails.”Ruby is an object-oriented language. Certain problems in software development are easier to solve with an object-oriented approach. A good software solution will be easier to maintain. Easier maintenance means a longer, revenue-generating lifespan for the code. Software that makes money is always welcome!Rails: The FrameworkRails is a framework written in Ruby. One of the best ways to define Rails is to describe the problem that it solves.Creating a web app can be time-consuming because of all the details that must be tracked and managed. How does the app connect to the back-end database? How does information get pulled from the database for display on the screen? As users, we take well-built web apps for granted. However, every element of every page must be clearly defined and thoroughly tested before users visit the site. Every text box, every drop-down arrow, every data field (credit card number, expiration date, etc.) must be programmed and thoroughly tested before any users visit the site.Before Rails, developers had to make every decision from scratch for each new web app. It was like having to invent the wheel every time you assembled a bicycle. What a waste of time! It’s smarter to invent the wheel once. And then you can use variations of that wheel for other vehicles like automobiles and tractors.Gems are LibrariesIf you’ve spent any time around Rails developers, you may have heard the term “gem” in conversation. Gems are libraries of functions that get used over and over from one code base to the next. Gems are one reason why Ruby developers are so productive. We only invent the wheel when we have to. Otherwise, we’ll use a gem that has the wheel functionality that we need.Gems enable Ruby developers to spend less time re-inventing the wheel and more time writing code that is specific to the business problem at hand.By the way, Rails is a gem.Rails is a Gem?That’s right, Rails is a gem. Rails was extracted from a web-based project management application called Basecamp. After writing the code for Basecamp, David Heinemeier Hansson (the developer) realized that he and his team might want to write other applications for the web with behavior similar to Basecamp. So DHH extracted the non-Basecamp-specific code from the app, bundled it into a gem, and called the gem Rails.Imagine if you were the first person to invent The House. While inventing the house, you invent new features like doors, windows, and water faucets. After building the first house, you decide to build more houses. You save time on future houses by using some of your inventions from the first house: Doors, windows, and water faucets.Rails Automates Repeated TasksRails automates time-consuming, repetitive tasks (things that were once done manually) so that developers can focus on solving problems for your business.Here’s an example from another profession. Can you imagine an accountant’s life without a spreadsheet like Microsoft Excel? Maybe you don’t have to imagine! You might recall the days of paper spreadsheets, pencils, and 10-key hand-cranked calculators.Rails is to software developers as electronic spreadsheets are to accountants. Both tools make their respective professionals more productive by eliminating repetitive tasks.Rails Has Its LimitsRails and spreadsheets both eliminate grunt work. At the same time, they both have limitations. Neither is a replacement for rational thought. For example, knowing how to use a spreadsheet won’t make you an accountant because you still need to understand tax law and discounted cash flow analysis. Likewise, a developer who knows Rails must also understand object oriented programming and relational database theory in order to create a workable piece of software.More LearningIf you would like to dive into the details of Rails, you might want to:      Read a book. Many developers enjoy the Ruby on Rails Tutorial by Michael Hartl. Hartl goes into greater depth on all of the subjects mentioned in this post.        Join a user group. ChicagoRuby hosts multiple free events every month.        Attend a conference. WindyCityRails is the one that we run. There are several solid Ruby and Rails conferences around the world.  ",
      "url": " /blog/2017/07/25/a-business-view-of-ruby-on-rails/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2017-05-22-medcity-invest-2017": {
      "title": "MedCity INVEST 2017",
      "content"	 : "  We don’t have years, anymore, to make a decision. We have months. Or in some cases, weeks. ~ Bruce Brandes, CEO of LucroThe MedCity INVEST conference gathers physicians, investors, engineers, and entrepreneurs with a shared interest: Everyone is striving to improve healthcare. The event is produced by MedCity News. Investors arrive in search of their next ROI engine. Startup CEOs with eclectic backgrounds pitch bold ideas. The conversations are rich.Barbarians at the GateArundhati Parmar, VP and Editorial Director of MedCity News, opened the conference with an observation about “barbarians at the gate.” Barbarians are people from outside the medical profession with ideas for improvement.Fortunately, medical pros have figured out how to transform the barbarians into allies. Some physicians partner with electrical and mechanical engineers to create devices. Others join forces with software developers to build apps. Thinking further outside the box, financial experts have been invited to the table to come up with creative ways to pay for the new ideas. Yes, collaboration produces awesome results.For example…Using Virtual Reality to Reduce PainDrugs make the pain go away. But drugs can also have nasty side-effects like nausea and addiction.What if there was a way to treat pain without drugs? Enter virtual reality.David Rhew is a physician and the Chief Medical Officer at Samsung. During his keynote at MedCity INVEST, he shared the following MRI images to show how patients using VR have less pain than patients who are not using VR. In the images, the yellow areas indicate pain. More yellow means more pain. Here’s why VR works. Pain requires conscious attention. Conscious attention focuses on pain like a spotlight. But VR immerses patients into a separate world that stimulates the senses, drawing attention away from the pain. Patients feel better without (or with reduced) medication, and without the unpleasant side-effects that drugs produce.Samsung partners with Applied VR to make this solution work.History + Research = Great IdeasPanel discussions are usually boring, but that wasn’t the case at this event. During the What’s Hot in Biopharma Investing panel, an MD oncologist, a VC, and a PhD researcher shared the history behind microbiome research.The microbiome is the community of bacteria that all humans carry around inside of our bodies. These living organisms help our digestive and immune systems. Over 1,700 years ago, Chinese physicians discovered how to treat some illnesses by altering the make-up of the microbiome. The records of ancient wisdom have been helpful to present-day researchers.Data and Digital HealthAs physicians and researchers learn more, they discover ways to treat patients as individuals, not as one data point in a monolith. At the same time, gathering data helps researchers to spot trends and identify new treatments. Researchers are immersing themselves in Big Data while simultaneously exploring the data set of one.Creating Products that Make SenseProduct development in healthcare starts with some fundamental answers, similar to other industries. Key questions to answer for any problem we want to solve:  Who really cares about this problem? How do you know?  Have you spoken to the person who has this problem?  Do you really understand their challenges?  Scalability: What will it take for you to take this to more customers?  Durability: Do the customers return? A lot of solutions don’t stick.Dozens of healthcare startups pitched at the conference. Simultaneous pitches made it impossible to catch all of them. But all of the pitches I saw did a great job of answering the fundamental questions. Investor time was not wasted.Some of the companies that pitched…      BrainCheck. Founded by Yael Katz who holds a PhD in neuroscience. She observed that concussions are a $50 billion/year problem and decided to build software (including a mobile app) that patients can use to measure their own brain health. Competitive advantages: It’s easy to use and it provides relevent information to the doctor.        Tissue Analytics. Co-Founder and Chief Medical Officer Gabriel Brat holds an MD and a Masters in Public Health. With Tissue Analytics, nurses can measure and track the size of a wound by using the camera on a mobile phone. Photos can be shared with physicians as needed. Further, since the app gathers data on a variety of wounds, the company uses Big Data to spot trends which helps physicians plan treatment regimens.  The Hallway TrackSerendipity always plays a positive role at events like this. You never know who you might meet in the hallway between sessions. Here are a few hallway conversations that I enjoyed:      3R Cardio. CEO Eric Caron made it very clear that he was at the conference to raise $500k for his company. The amount was printed on his badge. Later, he shared that his approach had led to several potentially fruitful conversations.        Ilerasoft. CEO Kwaku Owusu and his team improve safety by helping hospitals to handle FDA equipment recalls in a timely way.        Isomark. Infections that are detected earlier are easier to deal with. CEO Joe Kremer and his team use breath analysis to detect infections. This non-intrusive method enables earlier detection and treatment.        Doctella. Patients feel better when they have some control over the treatment process. Doctella enables patients to be more active in their own care. Smart checklists within the app keeps patients active and informed.  ConclusionMedCity INVEST is a learning-rich gathering of motivated minds united in a common quest: To make healthcare better. This event was a great use of time. I look forward to next year.",
      "url": " /blog/2017/05/22/medcity-invest-2017/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2017-05-09-lessons-from-berkshire-hathaway": {
      "title": "Lessons from Berkshire Hathaway",
      "content"	 : "  I like the idea of artificial intelligence because we’re so short of the real thing. ~Charlie MungerThe Berkshire Hathaway annual meeting combines business education, entertainment, shopping, and fellowship into one weekend-long event. Chairman Warren Buffett and Vice Chairman Charlie Munger have held the gathering every year since 1966. This year’s meeting, held on Saturday, May 6, 2017, attracted over 38,000 participants. Omaha’s CenturyLink Center  was filled to the rafters.What draws people in? I think it’s a combination of straight talk, savvy humor, and a shared mission.Live Streaming Covers Most, Not AllBerkshire has partnered with Yahoo Finance to stream the meeting live at https://finance.yahoo.com/brklivestream. The stream covers most of the meeting. Of course, there are a few things that you’ll miss if you only attend online:      Opening movie. Every annual meeting starts with a funny 30-minute movie featuring  celebrities and Berkshire products. The actors and singers who appear in the movie do so at no fee (Warren admits to being cheap) with the understanding that the movie will not be made public beyond the meeting.        Shopping. The adjacent exhibit hall has booths for most Berkshire companies. Products are sold for deep discounts. Local stores that are part of the Berkshire portfolio (Nebraska Furniture Mart, Borsheims) also offer deep discounts for shareholders.        People. Our lives are enriched when we work together. Working together begins with an introduction. Sometimes, a random introduction can lead to a life-long, fruitful relationship (business or otherwise).  Straight Talk: Q &amp;amp; AThe Q &amp;amp; A session is the most education-packed part of the event. Warren and Charlie sit at the front of the room with 38,000+ onlookers (plus the online audience). They answer questions. They drink Coca-Cola. And they munch on See’s Candy.Warren’s answers tend to be detailed and professorial, with a few wise-cracks woven in. After answering a question, Warren might ask Charlie to add his view, to which Charlie might respond with a terse “damn right” or “I have nothing to add.”At one annual meeting, Buffett was asked for his views on the investment approach of a well-known money manager. Buffett then turned to Munger for his view.“He’s an idiot”, responded Munger.“You can’t say that, Charlie. He’s a nice guy”, replied Buffett.“He may be a nice guy. But he’s still an idiot.” Charlie then followed up with a quick explanation of how statistical analysis works, why a smart person should be willing to change their thinking in the face of new evidence, and how stubbornness gets investors in trouble. “And that’s why he’s an idiot”, Charlie concluded.The exchanges are impromptu and priceless.Shared Mission: The Business MeetingBerkshire shareholders gather ostensibly for the business part of the annual meeting, which only lasts about 15 minutes, from 3:15pm to 3:30pm most years. The business meeting includes the election of new board members.Shareholders enjoy the transparency of the Q &amp;amp; A session. The business meeting is where things get done.Parents, Families, and LoveWarren and Charlie are often asked about the secret of their success. Both attribute their achievements to parents, their community, and their upbringing. They were born five years apart less than two miles from each other. As teenagers, they both worked in the grocery store owned by Warren’s grandfather. Yet they didn’t meet until they were adults. Warren had already begun investing other people’s money. Charlie was practicing law. In time, Warren convinced Charlie that investing was more fun (and more profitable) than practicing law.Life-long friendships are a blessing. Sometimes friends make money together, but always the friendships enrich our lives far beyond anything that money can do. Buffett and Munger tell stories about miserable billionaires who have no one in their lives who love them. What an awful existence. But if we can live our lives with a few people who love us, and whom we also love, that’s a wonderful way to be.Thanks for the wisdom, Warren and Charlie. I look forward to the next annual meeting.",
      "url": " /blog/2017/05/09/lessons-from-berkshire-hathaway/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2017-03-13-technology-in-a-flat-world": {
      "title": "Technology in a Flat World",
      "content"	 : "Change is RealChange has always been with us. When change happens in the business world, companies can either adapt or die.Flatness DefinedThe World is Flat by Thomas L. Friedman was published in 2005 and rapidly became a bestseller. Friedman defines a flat world as one where intellectual work and intellectual capital can be created anywhere and delivered anywhere.How does a business decision-maker lead a team to benefit from flatness? A few thought-provoking ideas are presented here.Flatness and Fast FoodConsider a local fast-food example: Today, if you visit a McDonald’s drive- through in Cape Girardeau, Missouri, the order taker isn’t even located in the restaurant. Drive-through customers are actually speaking with a rep in Colorado Springs, Colorado, over 900 miles away. The order conversation (along with a digital photo) is carried from Missouri to Colorado via high-speed data lines. Cooks in the kitchen fill the order, and the delivery clerk matches you to your order by looking at your digital photo.One rep in Colorado can handle multiple restaurants around the country. Or even the world. The results: Faster service, more accurate orders, and lower costs.Digitized Work Done AnywhereIn past decades, factory workers watched as their jobs were shipped to low wage-earners in other countries. White collar workers felt safe because it seemed that so-called brain-work would always remain local. No longer. Today your American income tax return may be processed by accountants in India. The electronics in your PC may be designed in Malaysia, with the plans emailed to a factory in China. Web sites are developed in Ghana and bill collectors ply their trade from call centers in Canada and Barbados. We live in a world where intellectual work can be created anywhere and delivered anywhere. As Friedman would say, the world is flat.U.S. Tax Returns in India?Some people may be alarmed by the idea tax returns processed overseas. However, the idea makes sense when you consider that tax returns are made up of numbers, numbers can be digitized, and anything digitized can be zipped over the Internet at the speed of light. An American accountant who hires low-cost workers elsewhere for rote tasks frees herself to focus on high-level tasks such as developing business relationships and creating sound investment strategies.No More Grunt WorkFriedman shares the following example from the US government. Former Secretary of State Colin Powell was asked when he realized that the world was flat. Powell’s one-word reply: “Google.” In his early days as a high-level official, Powell had to call an aide whenever he wanted to read a particular UN resolution. Then he’d wait hours while the aide dug up the document.Today, anyone can type a UN resolution number into Google, and the text comes up immediately. Aides no longer do grunt work because the boss already has the information he needs.Fingertip InformationIn a flat world, grunt work is reduced when high-level execs get raw data through tools like Google. Today when the boss summons an aide, that aide had better be prepared to answer probing questions because the boss already has the raw data. Aides who provide insightful analysis are more valuable than grunts who fetch reports. Subordinates who are freed from grunt work can play a more valuable intellectual role in the business process. Everybody wins.The Driver: Triple ConvergenceFriedman believes that flatness is driven largely by a concept called Triple Convergence, which consists of three components:  Better technology,  Creative uses for existing tools, and  Lots of new people.Better TechnologyAdvances in technology, such as PCs and the Internet, make it possible for small companies to look big. Brochure-type web sites were a very primitive example. Technology also enables big companies to look small &amp;amp; personal through contact management engines and customization software.Creative Uses for Existing ToolsCompanies using improved technology are doing so in creative new ways, employing techniques never imagined by the original inventors. One example: Home Depot’s big box stores are likely to have a wide selection of tools and supplies due to their sheer size. But the real competitive advantage comes when Home Depot combines size with effective supply chain management and automatic re-ordering of goods via the Internet, minutes after the customer plucks an item from a shelf. When a creative person receives a tool he really likes, he’ll want to do more with it and innovative uses are born.Two Billion New PlayersFinally, just as the world was being flattened by better technology, over two billion new players stepped onto the field. People in Asia, Africa, the former Soviet Union, and Eastern Europe have adopted the latest technology in rapid fashion. These new players build on the improved technology, and are often the catalysts behind the creative new uses.Great innovation often comes from outside the mainstream. Linux, the operating system that runs high-traffic web sites such as Google, was developed by a member of Finland’s Swedish-speaking minority: Linus Torvolds. Today, kids in rural India, Ghana, or China can use cheap PCs to learn Linux and eventually compete with the largest companies on the planet.Cell phones are a great example. If you walk down a busy street in a developing nation, many of your fellow pedestrians will have a bottle of water in one hand and a cell phone in the other. City dwellers in Asia “wire” money to relatives in rural areas by cell phone. Nations with poor or non-existent land line service can shift to newer wireless technologies quickly because there is no old infrastructure to replace.Flatness: Who Wins?In the recent past, a talented engineer born &amp;amp; raised in India would need to travel to the US in order to practice his profession because fewer engineering opportunities existed for him at home.Now, with global relationships, supported by high-speed internet connections, that same engineer can collaborate with peers in Silicon Valley and anywhere in the world, and still walk home for dinner when his day is done.Who wins in this scenario? Everybody. The engineer wins because he now has another outlet for his gifts. And the world wins because we stand to benefit from the creativity of another engineer.Leveraging TechnologyFlatness isn’t all about technology. Technology is merely a tool that enables change. And like any good tool, technology must serve the big picture. If your computers enable you to serve your customers well, then your company is in good shape. Computers that do not contribute to the achievement of goals are useless.Flatness Questions  Do you have access to the information you need to keep your customers satisfied?  Where are your customers and partners located, in the USA or elsewhere in the world? Are you sure?  Given the trend toward flatness, what can you do about it? What must you do about it?Note: An earlier version of this article was posted at WisdomGroup.com.",
      "url": " /blog/2017/03/13/technology-in-a-flat-world/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2017-02-15-animated-graphics-in-ruby": {
      "title": "Animated Graphics in Ruby",
      "content"	 : "  There is nothing like a good problem to spark the synapses, is there? To open the mind to new possibilities, new ways of seeing things. Of course, one must always confront self doubt and fear. But that is a small price to pay for the exhilaration of finding the perfect solution.~Kurros, Think Tank Star Trek Voyager, S5E19Josh Cheek likes to wrestle with good problems. In a single week, his mind might race between software development, quantum physics, music, and mathematics. Last Friday, Josh tweeted about some of his animated graphics experiments in Ruby. He linked to a GitHubGist with source code for the sine wave animation displayed with this article.This post lists Josh’s code, along with the steps required to install the dependencies and make the snippet run.3D Sine Wave Source CodeIf you download the code as snake.rb and try to run it from the command line using…$ ruby snake.rb…it won’t run, unless you already have the dependencies installed on your system. Source code for the 3D sine wave animation appears below.# Recreating the second example from here (they&#39;re at the bottom) https://learningd3.com/blog/generative-art/# First one is at https://gist.github.com/JoshCheek/d29901f7872711b1c70faafbc334e336require &#39;graphics&#39;class SnakesBodyAsItEatsMice &amp;lt; Graphics::Simulation  include Math  def initialize    super 600, 350, 24    @speed      = 0.225    @num_lines  = 100    @num_waves  = 3.5    @h_margin   = 75    # How many ellipses does the radius pass through? (0.5) would mean their edges touch instead of overlapping    num_widths = 4    # Height radius when inflated and deflated    @e_max_height = h/8.0    @e_min_height = h/60.0    # These shouldn&#39;t need tweaking, they&#39;re for calculating the center and width of the ellipses    @e_offset    = (w - 2*@h_margin)/(@num_lines+2.0*num_widths-1)    @e_width_rad = num_widths*@e_offset-1  end  def draw(time)    clear :black    @num_lines.times do |j|      e_height_radius = (        sin(sin(sin(sin(                             (j-time*@speed) /                            @num_lines *                               2*PI *                                     @num_waves                             )))) /          sin(sin(sin(1))) +                                                                    1                                      ) /        2 *                                        (@e_max_height - @e_min_height) +          @e_min_height                            draw_segment @h_margin+@e_width_rad+j*@e_offset, h/2,                   @e_width_rad, e_height_radius,                   :white, :black    end  end  def draw_segment(x, y, w, h, border_color, fill_color)    ellipse x, y, w-1, h-1, fill_color,   true    ellipse x, y, w,   h,   border_color, false  endendSnakesBodyAsItEatsMice.new.runSDL, Installed via HomebrewFor macOS users, some of the dependencies are easier to install via Homebrew. Start with Simple DirectMedia Layer (SDL), which is is responsible for displaying graphics for this snippet.$ brew install sdl==&amp;gt; Downloading https://homebrew.bintray.com/bottles/sdl-1.2.15.sierra.bottle.3.tar.gz######################################################################## 100.0%==&amp;gt; Pouring sdl-1.2.15.sierra.bottle.3.tar.gz🍺  /usr/local/Cellar/sdl/1.2.15: 225 files, 1.4M$ You will also need to use Homebrew to install related SDL libraries…  $ brew install sdl_mixer  $ brew install sdl_image  $ brew install sdl_ttfThat’s it for Homebrew. Now to install Ruby/SDL.Ruby/SDL, Installed via RubyGemsRuby/SDL enables Ruby programs to use SDL. SDL must be installed first in order for the RSDL gem to compile.$ gem install rsdlFinally, Install the Graphics GemJosh uses the graphics gem by Ryan Davis. Since the gem is still under development (as of this writing) it needs to be installed like so:$ gem install graphics -v 1.0.0b1 --preBuilding native extensions.  This could take a while...Successfully installed graphics-1.0.0b6Parsing documentation for graphics-1.0.0b6unable to convert &quot;xE9&quot; from ASCII-8BIT to UTF-8 for ext/sdl/sge/WhatsNew, skippingInstalling ri documentation for graphics-1.0.0b6Done installing documentation for graphics after 0 seconds1 gem installed$ Gotcha: If you run into installation trouble, double-check the dependencies. And if this article happens to be out of date, feel free to tell me so in the comments below.Now, Run the SnippetWith all of that done, we can now run the snippet…$ ruby snake.rb…with the following result.ConclusionMission accomplished! Thanks Josh Cheek for inspiring this post, and thanks Ryan Davis for creating the graphics gem.",
      "url": " /blog/2017/02/15/animated-graphics-in-ruby/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2017-01-07-hustlepreneur-video-series": {
      "title": "Hustlepreneur Video Series",
      "content"	 : "Abhinaya Konduru is in her senior year at the University of Illinois at Chicago, where she studies finance and mathematical computer science. One of her career goals is to become a venture capitalist.Abhinaya interviews entrepreneurs and other leaders as part of her Hustlepreneur video series. I was honored when she invited me to participate a few weeks ago. Here’s the result. Thanks Abhinaya for the interview. Much success to you as you move forward with your career!",
      "url": " /blog/2017/01/07/hustlepreneur-video-series/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-12-29-m-pesa-blends-fintech-mobile-in-kenya": {
      "title": "M-Pesa Blends Fintech + Mobile in Kenya",
      "content"	 : "  I rarely go to the bank nowadays. ~Taxi driver in Nairobi, Kenya speaking toa 60 Minutes reporter about M-PesaM-Pesa is the mobile payment service that dominates Kenya. M-Pesa runs on mobile phones, and you can use it to pay for almost anything. M-Pesa is used by Kenyans regardless of income level, technical skill, or location (urban or rural). In 2015, 42% of the Kenyan GDP was processed through M-Pesa.“Pesa” is the Swahili word for money, and the “M” stands for mobile. “Lipa na M-Pesa” means “purchase with M-Pesa”. My first M-Pesa experience happened during RubyConf Kenya in May 2016. So many developers at the conference raved about the service that I had to try it.Running on the SIM CardM-Pesa runs on a mobile phone’s SIM card. Therefore the app can run on any mobile phone, from the latest smartphone to the oldest feature phone. To run the app on my iPhone 6, I followed these steps:  Signed up for the Safaricom service.  Swapped my existing SIM for one for Safaricom.  Added some money to my new Safaricom account.…and I was ready to start using M-Pesa.First PurchaseOn a feature phone, M-Pesa appears on the menu with all of the other apps on the SIM card.On a smartphone, using M-Pesa requires navigating to “SIM Applications” and finding the M-Pesa app. If a business accepts M-Pesa for payment, they will have a till number. Enter the till number into the M-Pesa, enter the amount you owe, confirm the transaction, and you’re done. It’s that simple.Payments are sent between individuals just as easily. Sharing a cab? Each party can send their share to the driver via M-Pesa.The Future of M-PesaThe future looks bright any time young people with technical skills get excited about an idea. While in Kenya, I met several software developers who are building apps and businesses on top of the M-Pesa payment system. Way to jump on an opportunity! The M-Pesa ecosystem is a cool blend of financial technology, mobile communications, and user experience. We know the UX is solid because everyone in Kenya uses M-Pesa.M-Pesa vs BitcoinA comparison between M-Pesa and Bitcoin might seem “apples-to-oranges” to those with deep blockchain knowledge. But the comparison has value because:      Both are methods of payment that avoid paper currency.        Both have the potential to disrupt the banking system.  Having used both M-Pesa and Bitcoin, here’s my assessment.      M-Pesa has expanded quickly because it’s easy to use and it’s available on the one device that everybody uses, the mobile phone.        Bitcoin is less accessible because a user must open an account with a third-party service (like Coinbase or a wallet) to begin acquiring or spending the currency. In other words, the user must really want to use Bitcoin in order to get started.        M-Pesa is like the impulse items near the checkout line at the grocery store. It’s easy to start using M-Pesa because it’s right at your fingertips.        Bitcoin is somewhere in the back of the grocery store. You can get it, but you must look for it.  Bitcoin is still in the “early adopter” stage of Clayton Christensen’s technology adoption framework. Early adopters are willing to put up with a few headaches or obstacles. But the masses of people want something easy to use. That’s where M-Pesa fits the bill.Feel free to express yourself in the comments if you disagree :-)Fintech ExcitementAny time we have a product used by so many people, from such a diverse set of backgrounds, network effects come into play. Safaricom is in an excellent position to benefit from the network they’ve built. Somewhere, maybe sometime soon, a smart group of developers will build on top of the M-Pesa platform and benefit, too.What an exciting time to be in fintech!",
      "url": " /blog/2016/12/29/m-pesa-blends-fintech-mobile-in-kenya/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-12-07-actioncable-vs-socket-io-at-confoo": {
      "title": "ActionCable vs. Socket.io at ConFoo",
      "content"	 : "How do you achieve real time, bi-directional, event-based communications in your apps? The Socket.io library is tested and true. ActionCable, new with Ruby on Rails version 5, is a challenger. Which solution is better, and why?This presentation compares Socket.io and ActionCable (included w/Ruby on Rails version 5).Thanks ConFoo!The presentation was given at ConFoo in Vancouver, BC, Canada on December 7, 2016. Thanks for the invitation, ConFoo organizers!",
      "url": " /blog/2016/12/07/actioncable-vs.-socket.io-at-confoo/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-12-05-from-spreadsheets-to-rails": {
      "title": "From Spreadsheets to Rails",
      "content"	 : "Excel spreadsheets are ok for quick analysis, but when the rows are too many and the formulas are too complex, recalc time slows to a crawl. Plus, sharing a spreadsheet is cumbersome due to security and version control headaches. One solution: Moving away from the spreadsheet, and building a web app instead.This presentation was delived at ConFoo in Vancouver, BC, Canada on December 5, 2016.",
      "url": " /blog/2016/12/05/from-spreadsheets-to-rails/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-11-03-getting-started-with-clojure-koans": {
      "title": "Getting Started With Clojure Koans",
      "content"	 : "Clojure is a dialect of the Lisp programming language that runs on the on the Java virtual machine (JVM).One advantage of running on the JVM: Clojure apps can leverage the vast library of Java apps that already exist. If a company has invested heavily in Java, they can bring Clojure into the mix without having to re-write their tried and tested Java code.This post shows how to start experimenting with Clojure on Mac OS X.Install LeiningenLeiningen is a build automation tool for Clojure projects. It offers a quick way to install Clojure and related tools. To install Leiningen on OS X, use Homebrew.~$ brew install leiningen==&amp;gt; Downloading https://homebrew.bintray.com/bottles/leiningen-2.7.1.sierra.bottle.tar.gz######################################################################## 100.0%==&amp;gt; Pouring leiningen-2.7.1.sierra.bottle.tar.gz==&amp;gt; CaveatsDependencies will be installed to:  $HOME/.m2/repositoryTo play around with Clojure run `lein repl` or `lein help`.Bash completion has been installed to:  /usr/local/etc/bash_completion.dzsh completion has been installed to:  /usr/local/share/zsh/site-functions==&amp;gt; Summary🍺  /usr/local/Cellar/leiningen/2.7.1: 8 files, 14.7M~$ To confirm leiningen installation…~$ which lein/usr/local/bin/lein~$ And to determine which version of Leiningen you have installed…$ lein --versionLeiningen 2.7.1 on Java 1.8.0_101 Java HotSpot(TM) 64-Bit Server VM$ Now that installation is complete, it’s time to enjoy the Koans.Get and Run the Clojure KoansThe Clojure Koans were inspired by the Ruby Koans written by a stalwart of the software development community, Jim Weirich. To get the Clojure Koans, clone the GitHub repo where they’re located.$ git clone git://github.com/functional-koans/clojure-koans.git$ From there, you can cd into the directory where you cloned the koans and run them.$ lein koan runStarting auto-runner...Considering /Users/rth/Code/Clojure/clojure-koans/src/koans/01_equalities.clj...Now meditate upon /Users/rth/Code/Clojure/clojure-koans/src/koans/01_equalities.clj---------------------Assertion failed!clojure.lang.ExceptionInfo: We shall contemplate truth by testing reality, via equality(= __ true) {:line 6}, compiling:(/Users/rth/Code/Clojure/clojure-koans/src/koans/01_equalities.clj:4:1)The Assertion failed! line tells us that Clojure is starting us off with a failing test. Some developers will leave a project with a failing test at then end of the day so that they have a clear place to start on the next day.Every time you solve one of the riddles put forth by a koan, the corresponding test passes and you are directed to the next test. The Clojure Koans are a fun way to exercise and build Clojure muscles.Running a Clojure REPLWhat if you’re going through the Koans and you want to experiment a bit? Clojure’s read-evaluate-print-loop (REPL) is a quick way to try syntax on the fly. You can get to the REPL via Leiningen.$ lein replnREPL server started on port 59750 on host 127.0.0.1 - nrepl://127.0.0.1:59750REPL-y 0.3.7, nREPL 0.2.12Clojure 1.8.0Java HotSpot(TM) 64-Bit Server VM 1.8.0_101-b13    Docs: (doc function-name-here)          (find-doc &quot;part-of-name-here&quot;)  Source: (source function-name-here) Javadoc: (javadoc java-object-or-class-here)    Exit: Control+D or (exit) or (quit) Results: Stored in vars *1, *2, *3, an exception in *euser=&amp;gt; (+ 2 2)4user=&amp;gt;user=&amp;gt; Bye for now!You can exit the REPL with CTRL + D.ConclusionNext step: Let’s keep learning!",
      "url": " /blog/2016/11/03/getting-started-with-clojure-koans/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-10-24-parallelism-at-scna-2016": {
      "title": "Parallelism at SCNA 2016",
      "content"	 : "SCNA has long been one of my favorite conferences. Reason: Rich conversations with other attendees. People who attend SCNA come from a wide range of developer communities and they represent most of the languages in use today. Each community grows stronger when we borrow good ideas from each other.Presenting Parallelism: Thanks!The organizers of SCNA invited me (several months before the acquisition) to present Exploring Parallelism With Parallella and Raspberry Pi. Thank you, organizers, for having me on stage. What’s Next?One advantage of presenting to a room full of smart people: Feedback! Questions from the audience are always rich with new ideas. Lots of new paralleliism-related topics to explore. As always, I’ll post here as the discoveries unfold.",
      "url": " /blog/2016/10/24/parallelism-at-scna-2016/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-09-22-obsessive-learning": {
      "title": "Obsessive Learning",
      "content"	 : "  I do the learning thing pretty obsessively. ~Mandla MagagulaMandla Magagula and I spoke via Skype yesterday morning. Mandla is a software developer based in Johannesburg, South Africa. When he’s not at work, Mandla and his team teach software craftsmanship to local youth. Mandla and I met at Ruby Fuza 2015 in Cape Town. His passion for teaching and learning radiates for anyone he meets, as you can see in this 20-minute video:  Talking Ends. Action Begins.During our Skype call, we talked about 8th Light’s acquisition of WisdomGroup, and within a few minutes our conversation turned to Mandla’s thoughts about training the next generation of developers. Conversations like this become powerful when the talking ends and the action begins. In Mandla’s case, action takes form in Uzuko Hill, the training organization that he formed with a colleague, Theo Bohnen. They launched with a handful of students, and they grow every year.Software craftsmanship is global.Striving Towards MasterySome folks are content to perform at their current level of skill. They deliver an acceptable level of results at work, and they’re fine. But some professionals have a burning desire for mastery. People with this burning desire to master a craft tend to gather together. To learn from each other. To challenge each other to grow.SCNA is a conference that attracts developers with a burning desire to achieve mastery in software development. To hone their skills continuously over time, and to deliver better results for clients and other stakeholders.Do you have a driving desire to achieve? Then perhaps SCNA is for you.Come to SCNAAre you a software developer looking to take your skills to the next level? Consider the SCNA conference, arriving in Los Angeles on October 21, 2016. Learn from industry leaders like Robert “Uncle Bob” Martin and Michael Feathers. Network with your peers, trade ideas, and have a great time with a room full of smart people who will welcome you. Register now. We look forward to seeing you.",
      "url": " /blog/2016/09/22/obsessive-learning/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-09-12-the-business-of-parallelism": {
      "title": "The Business of Parallelism",
      "content"	 : "The Business of Software Conference is a gathering for people who run software companies. This year marks the tenth year for the conference.Thank you BoS organizers for inviting me to present The Business of Parallelism.Slides appear below. Video will be posted when it becomes available.First Presentation After AcquisitionThe presentation at BoS was my first after 8th Light acquired WisdomGroup. It was fascinating to hear from others in the audience who have been through similar deals. Some as buyers, some as sellers, others with multiple transactions on either side. Lots to learn both ways.",
      "url": " /blog/2016/09/12/the-business-of-parallelism/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-09-12-8th-light-acquires-wisdomgroup": {
      "title": "8th Light Acquires WisdomGroup",
      "content"	 : "  We’re gonna need a bigger boat. ~Police Chief in the movie JawsAfter 21 years of independent operation, WisdomGroup has been acquired by 8th Light.WisdomGroup’s two-decade history has been an adventure of growth and change. We started with network and server installations, morphed to the web, and tightened our focus to Ruby in 2005.In the past 24 months, WisdomGroup has moved beyond the web into advanced tech such as parallelism and IoT. Exploring these areas has stretched us in good ways. And now, as the police chief said in the movie Jaws: We’re gonna need a bigger boat.Two choices: Grow WisdomGroup organically (a hiring process requiring years), or join forces with a larger company that consistently delivers great software. 8th Light is the logical choice.Hats off to CEO Paul Pagel and the entire 8th Light team for a smooth acquisition process.",
      "url": " /blog/2016/09/12/8th-light-acquires-wisdomgroup/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-09-02-buffett-diversification-risk-focus": {
      "title": "Buffett on Diversification, Risk, and Focus",
      "content"	 : "  Diversification is a protection against ignorance. It makes very little sense for those who know what they’re doing. I can’t be involved in 50 or 75 things. That’s a Noah’s Ark way of investing – you end up with a zoo that way. I like to put meaningful amounts of money in a few things. We believe that a policy of portfolio concentration may well decrease risk if it raises, as it should, both the intensity with which an investor thinks about a business and the comfort-level he must feel with its economic characteristics before buying into it. In stating this opinion, we define risk, using dictionary terms, as ‘the possibility of loss or injury.’ ~Warren BuffettEvery professional wrestles with focus. You’re smart enough to do many things. But to achieve, to really achieve, you need to focus on a few key priorities.Yeah, I need constant reminding here.",
      "url": " /blog/2016/09/02/buffett-diversification-risk-focus/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-08-01-the-chicago-polyglot-mingle": {
      "title": "The Chicago Polyglot Mingle",
      "content"	 : "Members of Chicago’s Python (ChiPy), Java (CJUG), and Ruby (ChicagoRuby) communities launched The Chicago Polyglot Mingle on July 28, 2016. Purpose: To bring Chicago’s software development community together for an evening of networking and socializing. Here’s a 3-minute recap.Many Languages + One GoalSometimes we kid each other about the one true language that a developer must know &amp;amp; use in order to be cool. Beyond the humor lies the knowledge that it’s all about using the right tool for a particular job. A compiled language like C works well for embedded projects because the executables are small and the C language is highly portable. Java dominates corporate America because lots of Java libraries have been written and over nine million Java developers are available to maintain the code. Functional languages like Lisp are on the rise because newer hardware supports concurrency and parallelism. And so on.When we learn multiple languages, we add tools to our problem-solving toolbox. An experienced developer can take an algorithm learned in FORTRAN in 1982 and apply it to a Ruby project in 2016.Thank YouThank you Brian Ray and Freddy Guime for the opportunity to work with you on The Chicago Polyglot Mingle 2016. Looking forward to next year!",
      "url": " /blog/2016/08/01/the-chicago-polyglot-mingle/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-07-13-web-iot-for-entrepreneurs": {
      "title": "Web + IoT for Entrepreneurs",
      "content"	 : "Philip Fairweather and his team at the Small Business Development Center at Bethel New Life are serious about creating opportunities for entrepreneurs. The team invited me to present at one of their entrepreneurship workshops this afternoon. Thank you Phil for the invitation and for an audience of driven entrepreneurs. Slides appear below.Next StepsIt is always exciting to be in a room full of entrepreneurs because entrepreneurs solve problems. I look forward to seeing great things from the SBDC at Bethel New Life!",
      "url": " /blog/2016/07/13/web-+-iot-for-entrepreneurs/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-07-07-windycitythings-2016-wow": {
      "title": "WindyCityThings 2016&amp;#58; Wow!",
      "content"	 : " 2016 marked the first year for a very special IoT conference, WindyCityThings. Thank you to everyone who made the event so successful, especially:  Speakers, sponsors, attendees, and organizers who all stepped up to make the conference happen.  BLUE1647 for running the IoT Youth Program.  David Kinney and Amy Kinney for helping with speaker selection and MC-ing.  South Shore Cultural Center for providing a great venue.  Ganza Image Productions for summarizing the WindyCityThings experience with a 3-minute video.Next YearPlanning for the next WindyCityThings is already underway. If you’re excited about IoT and if there’s something special that you’d like to see at WindyCityThings in 2017, drop a message in the contact form and the organizers will consider it for next year.We look forward to hearing from you!",
      "url": " /blog/2016/07/07/windycitythings-2016-wow/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-06-13-iot-for-educators-and-students-at-windycitythings": {
      "title": "IoT for Educators and Students",
      "content"	 : "The Internet of Things (IoT) is new, roughly where the web was in the early 1990s (before Amazon or Google). WindyCityThings is a conference for IoT professionals. This year, we’re offering special discounts for educators and students, especially those involved in STEM.What is IoT and why might you care? This article will give a brief answer. Let’s start with a 60-second video.    There’s still time to be an early adopter in IoT. Here’s why.What is IoT?IoT is all about connecting devices to each other via the internet. Enabling devices to talk to each other with minimal human direction. Connectivity enables us to solve problems in better ways. For example, aircraft engines with IoT-equipped sensors can order replacement parts before the engine shows signs of trouble. IoT enables proactive maintenance, which saves lives.IoT also helps shippers deliver safer foods and medicines.Student Discounts for WindyCityThingsProfessionals pay $499 to attend WindyCityThings. College and high school students ages 16 or older can attend the full WindyCityThings 2016 conference for $39.00. Use the discount code IOTSCHOOL when you register.Educator DiscountsTeachers, instructors, and professors with an interest in IoT or STEM can attend the full WindyCityThings conference for $39.00. Use the discount code EDUCATOR when you register.Professional DiscountsIf you’re in a profession other than education, use the discount code CHICAGORUBY to save $150 on your full-conference registration.IoT Youth ProgramStudents 12 to 17 years of age can register for the half-day IoT Youth Program.ConclusionThe Internet of Things connects devices. WindyCityThings connects people. Connections, when done well, lead to achievement. Come to WindyCityThings and learn about IoT before everyone else. We look forward to seeing you!",
      "url": " /blog/2016/06/13/iot-for-educators-and-students-at-windycitythings/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-05-08-rubyconf-kenya-2016": {
      "title": "RubyConf Kenya 2016",
      "content"	 : "A big “thank you” to the organizers of RubyConf Kenya for inviting me to present on Parallella and on entrepreneurship. Rich learning and networking were had by all.I was especially impressed with M-Pesa, the mobile payment system used throughout Kenya. M-Pesa is a disruptive blend of financial technology, UX, and ecosystem management. Local devs are writing financial apps that leverage the M-Pesa platform. Banks are already being disrupted by M-Pesa, and the topic is worth a separate post on this blog.Entrepreneurship and Open SourceSlides from the Entrepreneurship presentation…Parallella, Supercomputing, and RubySlides from the Parallella presentation…After the Conference: Nairobi GNU/Linux User GroupA fellow developer invited me to attend the Nairobi GNU/Linux User Group held at the Tunapanda Institute on Saturday afternoon. The presenter, an instructor at Tunapanda, shared her experience with teaching tools for Scratch and PHP. The packed room held about 25 enthusiasts.After the meeting, I met Linux system admins and open source devs who are deeply immersed in the Android space. They’re developing on devices that are hard (or impossible) to get in the USA. Multi-SIM Android phones are common in Kenya. One dev carries an Android with dual SIMs, eight (8) 64-bit cores, and the software tools to determine which core(s) are running at any given time.Sad to say that I will be leaving Kenya in a few days. Gotta come back!",
      "url": " /blog/2016/05/08/rubyconf-kenya-2016/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-04-11-comparing-ruby-c-and-go": {
      "title": "Comparing Ruby, C, and Go",
      "content"	 : "What do we learn when we solve the same problem in Ruby, C, and Go? How might the solutions differ in flexibility, readability, and performance?The Hashrocket team presented a snake_case programming challenge during Ancient City Ruby last week. Nineteen attendees submitted correct solutions. Three of the solvers were selected at random to receive a prize: Raspberry Pi 3.One of the solvers, Jack Christensen of Hashrocket, gave a lightning talk about his approach. The contest called for a solution in Ruby. Jack added two more languages: C and Go.The ChallengeHere’s the challenge, as presented to the Ancient City Ruby audience:  You’ve just arrived in sunny St. Augustine, and find yourself amazed by the visionary civic planning that would result in the area in which you now stand: a street grid exactly 10 blocks square. You’re in the northwest corner of this 10 by 10 block area, and would like to take a scenic walk to the southeast corner, while only ever moving south or east. As you begin walking, you wonder to yourself, “how many different paths could I take from this northwest corner to the southeast corner?” You quickly note that if the downtown area were only a 2 block by 2 block grid, there would be 6 distinct paths from one corner to the other (see the diagram at the top of this post). So, how many distinct paths are there through the 10 by 10 downtown area?We’ll assume that the standard compass points apply to the map: North is at the top.Studying the ProblemJack observed a few things about the scenic route:      At each intersection, there are two directions that a traveler can choose while moving from start to finish along the scenic route: south or east.        At the end of the walk, the traveler will have walked a total of ten (10) blocks south and ten (10) blocks east. Twenty moves in all.  Any solution that nets 10 south plus 10 east will get the traveler to the end of the route.Data Representation“Two choices… sounds like binary to me”, Jack observed during his lightning talk. So he decided to represent each journey as a 20-bit binary number:      1 bit for each of the 20 moves.        Let the bit = 1 for a southward move.        Let the bit = 0 for an eastward move.  A successful journey will consist of exactly ten “1” bits and ten “0” bits. The 1s and 0s can be in any order.This similar to a coin-flipping problem. The flipper flips a coin twenty times, recording heads or tails after each flip. How many different ways can we flip the coin so that the end result produces exactly ten heads and exactly ten tails?Start Small (2x2)The binary model works with the small, 2x2 block example at the beginning of this post.0000000100100011 (solution)01000101 (solution)0110 (solution)011110001001 (solution)1010 (solution)10111100 (solution)110111101111There are six solutions represented in binary, the same number of solutions shown graphically in 2x2 block example.Math Solution for 10x10A mathematician, observing that we want to choose 10 bits from a fixed set of 20 bits, might use combinatorics:Any correct algorithm will give us the same result: 184,756 paths that fit the constraints of the challenge.Brute Force Solution in RubyA brute force solution will solve the problem by looking at every possible combination of bits, one by one. Easy for a small dataset like the 2x2 example. But for larger datasets, a brute force algorithm will consume more time.Of course, brute force can be fun! Here’s Jack’s brute force solution in Ruby.puts (0..(2**20)).count { |n| n.to_s(2).chars.count(&quot;1&quot;) == 10 }This one-line program…      Iterates over every integer from 0 to 2**20 (20-bits long).        Converts the number into binary.        Converts that binary number into a string.        Counts the number of “1” characters in the string.        If the string contains exactly ten “1” characters, then that string gets counted as a solution path.        The final count of solution paths is printed on the screen.  Brute force!We can use OS X’s time command to measure performance.$ time ruby main.rb184756real0m3.129suser0m3.115ssys0m0.012s$ Ruby found the correct result, 184756, in just over three seconds.Updated Ruby Version (14Apr2016)In the comments below, rbhander observed that we can write the brute force Ruby solution without the chars method. It works, and it saves time:puts (0..(2**20)).count { |n| n.to_s(2).count(&quot;1&quot;) == 10 }Before we run the new Ruby version, let’s use the chmod command to make it executable.$ ls -al main-nochars.rb-rw-r--r--  1 rth  staff  59 Apr 12 00:22 main-nochars.rb$ chmod +x main-nochars.rb$ ls -al main-nochars.rb-rwxr-xr-x  1 rth  staff  59 Apr 12 00:22 main-nochars.rb$ Timing the faster Ruby version…$ time ruby ./main-nochars.rb184756real0m0.567suser0m0.555ssys0m0.010s$ The version without chars executes in 567ms, much faster than the first Ruby version. Open source rocks when we share ideas like this!Brute Force in CWe expect C to be faster because it’s compiled and closer to the hardware. Let’s see if that’s true. Here’s Jack’s solution in C:#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdint.h&amp;gt;#define SQUARE_SIZE 10int main() {  int64_t paths = 0;  for(int64_t i = 0; i &amp;lt; (int64_t) (1)&amp;lt;&amp;lt;(SQUARE_SIZE*2); i++) {    int64_t bitCount = __builtin_popcount(i);    if(bitCount == SQUARE_SIZE) {      paths++;    }  }  printf(&quot;%lldn&quot;, paths);  return 0;}How long does it take to find the solution in C? First, let’s compile the program…$ gcc main.c -o main$ …and run it using time to measure performance.$ time ./main184756real0m0.009suser0m0.006ssys0m0.002s$ Execution in nine milliseconds. Running close to the metal has its advantages! The C solution offers other benefits:      Flexibility. If you want to solve a larger square, you know exactly what constant to change, SQUARE_SIZE.        Readability. You can see exactly what’s going on inside of the loop. At any given time, the varialbe paths stores the number of paths that the program has found, while bitcount stores the number of set bits in the current number under examination.  Brute Force in GoAnd now for the brute force Go solution.package mainimport (&quot;fmt&quot;&quot;github.com/cznic/mathutil&quot;)const squareSize = 10func main() {var paths int64for i := uint64(0); i &amp;lt; uint64(1&amp;lt;&amp;lt;(squareSize*2)); i++ {bitCount := mathutil.PopCountUint64(i)if bitCount == squareSize {paths++}}fmt.Println(paths)}Before we compile and run the program, we need to grab a math library from github.com/cznic/mathutil. Here’s how to do that.$ go get github.com/cznic/mathutil$ Next, we compile the program. Note that Go is particular about directory structure. Unlike with C, the source file and the executable file reside in different directories by default, even with a small Go program. Therefore, the next few illustrations will include the full path of the directories where the commands were executed on my machine.~/Code/gocode/src/github.com/rayhightower/acr16$ go install~/Code/gocode/src/github.com/rayhightower/acr16$ Next, switch to the directory where the new executable is located, and run it while using time to measure performance.~/Code/gocode/bin$ time ./acr16184756real0m0.015suser0m0.009ssys0m0.004s~/Code/gocode/bin$ Same result, 184756, as expected. Execution in fifteen milliseconds. Much faster than Ruby, but not as fast as C.Like C, this Go solution offers some advantages:      Flexibility. For a larger square, change the value of one constant, squareSize.        Readability. The loop structure makes this program easier to read than the single-line Ruby version.        Cool functions. For example, PopCountUint64 is a population counter, counting the number of bits that are equal to 1.        Native support for concurrency and parallelism. Not applicable in this example, but useful when we need to improve performance.  ObservationsProgramming challenges help to keep the mind flexible. Flexible brains are most helpful for problem solving.C and Go, as compiled languages, will always execute faster than Ruby. Ruby, as an interpreted language, will always make it easy for developers to iterate and experiment because there’s no compile step to break our rhythm.GratitudeSpecial thanks to Ancient City Ruby for sharing a challenge that stretches the brain, and to Jack Christensen for solving the problem three ways.WindyCityThings: IoT in June 2016Are you exploring the Internet of Things? Then you might like the WindyCityThings IoT conference. Get the maximum return for the time you invest. Move forward on your next IoT project with confidence. Tickets are on sale now.",
      "url": " /blog/2016/04/11/comparing-ruby-c-and-go/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-04-08-ancient-city-ruby-2016": {
      "title": "Ancient City Ruby 2016",
      "content"	 : "Hashrocket launched Ancient City Ruby in 2013 and the conference has grown ever since. Participants come from around the world: Some to speak, some to learn, some to pair-program with the Hashrocket team for days (or weeks) after the conference.I am grateful to the organizers for inviting me to present Get Ready for Parallel Programming Featuring Parallella this year.Getting Started (with gotchas)If you own a Pine64 or Parallella (or if you are planning to own them) the following posts provide info on getting the devices up and running:      Pine64 Quick Start Guide (with Gotchas)        Parallella Quick Start Guide (with Gotchas)  Each post includes gotchas that got me so that they don’t get you. Continuous improvement is the goal, so your feedback is welcome and encouraged.Presentation SlidesSlides from the Ancient City Ruby presenation:ThanksThank you Hashrocket for organizing another great Ancient City Ruby conference!",
      "url": " /blog/2016/04/08/ancient-city-ruby-2016/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-04-04-pine64-quick-start-guide-using-mac-os-x": {
      "title": "Pine64 Quick Start Guide (with Gotchas)",
      "content"	 : "The Pine64 is a single board computer with four 64-bit cores. The device runs Linux, and prices start at US$15.00. The company raised $1.7 million in their Jan 2016 Kickstarter campaign.This post tells how to get a brand new Pine64 up and running using Mac OS X for image download and creation. Gotchas are included. Finally, we will compare the Pine64 with another multi-core single board computer, Parallella.Gotcha: Arch Linux w/2GB PineA64Problem: I chose to install Arch Linux Image with XFCE4 Base on Longsleep Image 20160304-1 because I have limited experience with Arch, and this was a chance to try something new. Later I learned that this distro contains a DMA data transfer bug that affects the 2GB PineA64. That’s my Pine! I will post an update after the bug has been resolved.Recommendation: Looks like there are two ways to avoid the DMA bug:      Use a different Linux distro. Keep in mind that at least two distros have the same DMA bug. Or…        Use the Arch Linux distro, fully aware that you will encounter the same obstacles as me (described below).  Download an Image FileSeveral Linux disk images are available for the Pine64. This list will probably grow over time.The image will be archived in .rar format. RAR is used because it has a higher compression ratio than .zip, and .rar files can store full file permissions while compressed.Apple’s Mac OS X does not include a utility for de-compressing .rar files. So you will need to grab one. I chose unrar via Homebrew. Here’s how.Install unrarHomebrew is an ideal way to install Unix utilities on Mac OS X. Once you have Homebrew on your Mac, install unrar like so:~$ brew install unrar==&amp;gt; Downloading https://homebrew.bintray.com/bottles/unrar-5.3.11.yosemite.bottl######################################################################## 100.0%==&amp;gt; Pouring unrar-5.3.11.yosemite.bottle.tar.gz🍺  /usr/local/Cellar/unrar/5.3.11: 5 files, 505.4K~$ Testing .rar Archive HealthTo confirm that unrar is installed correctly and to test the health of your image file…$ unrar t arch-pine64-bspkernel-20160304-1-xfce4.rarUNRAR 5.31 freeware      Copyright (c) 1993-2016 Alexander RoshalTesting archive arch-pine64-bspkernel-20160304-1-xfce4.rarTesting     arch-pine64-bspkernel-20160304-1-xfce4.img                OKTesting     Readme.txt                                                OKAll OK$ The message All OK is our green light!Extract the Image FileUse unrar to extract the image.$ unrar e arch-pine64-bspkernel-20160304-1-xfce4.rarUNRAR 5.31 freeware      Copyright (c) 1993-2016 Alexander RoshalExtracting from arch-pine64-bspkernel-20160304-1-xfce4.rarExtracting  arch-pine64-bspkernel-20160304-1-xfce4.img                OKExtracting  Readme.txt                                                OKAll OK$ Prepare the Micro SD CardYou’ll need a micro-SD card for the Pine64 operating system. Here are the steps needed to prepare the micro-SD from the command line.First, grab the disk designation of the SD card.$ diskutil list/dev/disk0   #:                    TYPE NAME              SIZE       IDENTIFIER   0:   GUID_partition_scheme                  *960.2 GB   disk0   1:                     EFI EFI               209.7 MB   disk0s1   2:               Apple_HFS MacSSD            959.3 GB   disk0s2   3:              Apple_Boot Recovery HD       650.0 MB   disk0s3/dev/disk1   #:                    TYPE NAME              SIZE       IDENTIFIER   0:  FDisk_partition_scheme                  *15.9 GB    disk1   1:              DOS_FAT_32 BOOT              134.2 MB   disk1s1   2:                   Linux                   15.8 GB    disk1s2Next, unmount the SD card.$ diskutil unmountDisk /dev/disk1Unmount of all volumes on disk1 was successful$ Finally, write the extracted Linux image to the SD card.$ sudo dd if=arch-pine64-bspkernel-20160304-1-xfce4.img of=/dev/disk1 bs=1mPassword:The dd command takes a long time to run, over 29 minutes on my machine. Here’s a quick run-through of the command options:      sudo gives you super powers.        dd is the “copy and convert” command. The letters “dd” have nothing to do with what the tool actually does. It’s just a command name. And like so many things in computer science, the name might be based on a pun.        if= specifies the input file. You can include the full path, or if the file is in your current directory, you can omit the path as shown in this example.        of= specifies the output file. We know that the SD card is located at /dev/disk so that’s where the results of this command are headed.  Note that your destination directory may differ from this one.        bs= specifies the block size used for the destination file.  Checking Progress While dd Burns the ImageThe dd command does not give any outward sign that it is makingprogress. That can be a little uncomfortable because it takes a longtime for the command to run.Here are two ways to check progress:      Run the Mac Os X Activity Monitor, and look for a process called dd. Watch the disk writes number as it increases. You can even sort the processes in descending order by disk writes.        In the terminal window where dd is running, hit control-T andyou’ll see a progress report in the terminal window.  Once dd is CompleteWhen dd is done, it outputs the following:$ sudo dd if=arch-pine64-bspkernel-20160304-1-xfce4.img of=/dev/disk1 bs=1mPassword:load: 1.41  cmd: dd 5933 uninterruptible 0.00u 6.59s731+0 records in730+0 records out765460480 bytes transferred in 302.578847 secs (2529788 bytes/sec)3800+0 records in3800+0 records out3984588800 bytes transferred in 1540.553921 secs (2586465 bytes/sec)From here, you can eject the SD card from your Mac and insert it the micro-SD card reader on the Pine64. Apply power to the Pine64 and… it boots!Login CredentialsDefault username/password combinations this Arch Linux image on Pine64:  user = root, pw = root  user = alarm, pw = alarm  user = guest, pw = guestOne Pine64 ObstacleAs of this writing, Midori and Firefox are not stable on my Pine64. Earlier this morning I learned about a DMA-to-Gigabit-Ethernet bug that might be the root cause of the browser stability issue. I’ll post updates as I learn more.Pine64 vs ParallellaIt is natural to compare Pine64 with Parallella. Both are multi-core, single board computers running Linux. After owning the Pine64 for just a few days, here are my first impressions:      Pine64 feels fast. It boots faster than Parallella and it responds quicker to commands.        Parallella’s Linaro image comes with more software out-of-the-box. Vim, Emacs, and Git are all present on the Parallella Linux image. Not so with Arch image for Pine64.        Pine64 has better hardware connections for power, HDMI, and USB. On the Pine64, all of these connections are standard, full-size. Further, you can connect a keyboard and mouse directly to the two USB ports on the Pine64 without using a USB hub. With Parallella, you need a micro-HDMI adapter, micro-USB adapter, and  USB hub to provide power for operating the keyboard and mouse.        Parallella has more cores. Each Parallella comes with 2 ARM cores plus 16 or 64 Epiphany RISC cores. The cores have architectural differences, so simply counting the number of cores is not an apples-to-apples comparison.        Pine64 has 4K video. Parallella has 1080p HD video.        Pine64 has a version with 2GB of RAM. Maximum RAM on Parallella is 1GB.        Parallella has a smaller form factor, which may make it more suitable for IoT projects like robots or drones. The Pine64 will require more space inside of any IoT device.        Parallella uses 5 watts of power. Pine 64 uses 2.5 watts.        Parallella runs hot enough to require a heat sink, a fan, or both. Pine64 runs much cooler. No fan or heat sink required.        Pine 64 has the clear advantage when it comes to price. My Pine64 with 2GB RAM was $36.00 including shipping &amp;amp; handling. Parallella’s price range: $99 - $149.  Bottom LineThe choice between Pine64 and Parallella depends on your design goals. For desktop usage, I would choose Pine64. For an embedded system that needs parallelism and perhaps an FPGA, I would go with Parallella.Overall, I like the Pine64. I expect the browser (or DMA?) bug in the Arch Linux image to be resolved soon. It’s good to have a new quad-core 64-bit platform where parallelism can be explored.WindyCityThings: IoT in June 2016Are you exploring the Internet of Things? Then you might like the WindyCityThings IoT conference. Get the maximum return for the time you invest. Move forward on your next IoT project with confidence. Tickets are on sale now.",
      "url": " /blog/2016/04/04/pine64-quick-start-guide-using-mac-os-x/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-04-01-flourish-2016-at-uic": {
      "title": "Flourish! 2016 at UIC",
      "content"	 : "Flourish! is an exciting and free (as in beer) open source conference held annually at the University of Illinois at Chicago. Dates for this year: April 1-2, 2016.Why Flourish?We go to conferences so that we can learn about trends before everybody else. Flourish excels in predicting the future. Flourish introduced me to Arduino and Bitcoin years before they were common knowledge. The event is a magnet for open source enthusiasts who love to teach and learn.Presentation SlidesThis year, the organizers asked me to present Parallella. Bonus: Since my Pine64 arrived yesterday afternoon, I added it to the presentation. Fresh information on parallelism, straight from the oven!Presentation slides are below.Way to Go, Organizers!Thank you to the organizers for running a consistently great conference, year after year.",
      "url": " /blog/2016/04/01/flourish-2016-at-uic/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-03-30-how-to-build-a-successful-iot-company": {
      "title": "How to Build a Successful IoT Company",
      "content"	 : "  Find a need and fulfill it. Successful businesses are founded on the needs of people. ~A. G. GastonThe Internet of Things is surrounded by hype. But a few companies are navigating beyond the hype into a river of profit. IoT Chicago recently invited John Hennessy, founder of Sell the Prize, to share the IoT success story of Locus Traxx.Preserving Perishable GoodsLocus Traxx uses IoT to ensure that perishable goods are shipped safely.For example, if delicate medications are transported in a hot shipping container, the goods could spoil and lives could be put in danger. Locus Traxx makes sensors that monitor temperature and other environmental factors during transport to ensure that sensitive shipments arrive intact. The sensors send data to a cloud app in real time, while the data is collected, so shipping managers can monitor product health during transport.Other products from Locus Traxx are useful for preventing theft. Door sensors, combined with GPS, tell shipment owners exactly when and where doors are opened during transport. If you are shipping a truck-load of expensive flat panel TVs, you want your goods to arrive at your customer’s loading dock, not at an impromptu sidewalk sale.One interesting point about Locus Traxx and IoT: The company didn’t find its IoT niche right away.What Do Customers Want?Locus Traxx launched in 2007 with two guys, one truck, and a bunch of ideas about GPS tracking. Company leaders originally planned to sell GPS devices to trucking companies to help with lost shipments. Attach a device with GPS, cellular, and satellite radio to a shipping container, and you can track it through all the major ports of the world from a laptop. Cool technology, right?Yes, the technology was cool. But there was a problem. Every company they approached had the same response: “We don’t lose shipments.” Maybe they didn’t know that they were losing shipments. Or maybe they were too embarrassed to admit the losses. Either way, the seller can only sell if the customer admits the problem.Finding the PainWhile company leaders brainstormed potential solutions, Hennessy attended a meeting for food industry execs. At one point during the meeting, one of the participants expressed deep concerns about food quality and shipments. “If you think you haven’t made people sick, you’re wrong. You just haven’t made them sick enough to shut down your business”, he said to his colleagues.Food safety during transport is difficult and necessary and you have to get it right. The industry needed help. That’s when Locus Traxx decided to pivot.Simple, Effective EmailHennessy was a senior exec with Locus Traxx at the time. He began the company’s pivot with a simple message, sent via email to decision makers in the food industry.  I can make sure your shipments arrive fresh, safe, and on time. But I can only do that if you call me at [phone number]. ~John HennessyFood safety was the pivot point.Focus on Food SafetyToday Locus Traxx has grown to 100+ employees with operations around the planet. Their path to IoT success was not guaranteed. They started with cool IoT technology. But the technology was not enough. Revenue only started to flow after they found the customer’s pain point, food safety, and addressed it.Locus Traxx is successfully navigating the river of IoT.SummaryCool IoT technology is wonderful. But revenue comes when we address the customer’s pain points.Learning MoreIf you’re interested in real-world IoT success, check out:      IoT Chicago. The group runs multiple events each month. The networking alone is worth it.        WindyCityThings, an IoT conference in June in Chicago. Speakers run the gamut from machine learning to intellectual property. The conference includes an IoT Youth Program so we can launch the next generation of IoT leaders.  IoT started off as a collection of toys. But now there are serious companies making money from this trend. Your company could be next.",
      "url": " /blog/2016/03/30/how-to-build-a-successful-iot-company/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-03-17-chicago-industrial-arts-and-design-center": {
      "title": "Chicago Industrial Arts &amp; Design Center",
      "content"	 : "  Don’t just be stuck with an idea in your head. Build it, and get it in your hands. ~Alan Baker of Chicago Industrial Arts &amp;amp; Design CenterThe Chicago Chapter of the Association for Computing Machinery (ACM) hosted a special meeting at the Chicago Industrial Arts &amp;amp; Design Center (CIADC) on Wednesday evening. It’s tempting to call CIADC a maker space because it certainly appeals to makers. But as the ACM group learned during a tour, CIADC stretches beyond making and into empowerment.Video: Molten bronze is poured by makers at the Chicago Industrial Arts &amp;amp; Design Center (CIADC). Makers and ComputersWhy would ACM Chicago choose to tour a maker space? A few reasons:      Computing touches everything. As Mark Andreesen likes to say: software is eating the world.        Making things has almost become a lost art, especially in the USA.  People who can make things are in demand because many of us never learned how.  Four Instructional AreasCIADC is open to makers at every skill level, from beginners through advanced. Every member is required to take quarterly safety instruction because tools and procedures evolve over time. Instruction is offered in the following areas:  Metalworking  Woodworking  Casting  Integrated Technology &amp;amp; DesignStart off with integrated technology &amp;amp; design, and learn enough computer aided design (CAD) software to make it work. And then head to the other areas, gathering expertise and materials as needed. It takes years to achieve mastery, and CIADC offers a place where you can get started now.Some CIADC members float between the areas, building projects that encompass multiple skill sets.Industry + Art + DesignCIADC reflects the eclectic background of its founder, Matthew Runfola. Raised in farm country in upstate New York, surrounded by machinery, earned a Mechanical Engineering degree with a minor in Environmental Studies. Artist, designer of bmx bicycles and snowboards. One might call him a renaissance man. From the brief tour, one gets the impression that Runfola surrounds himself with similar minds.CIADC shows that industry, art, and design can and should exist together. What an exciting place for makers to make.",
      "url": " /blog/2016/03/17/chicago-industrial-arts-and-design-center/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-03-08-parallelism-at-geekfest": {
      "title": "Parallelism at Geekfest",
      "content"	 : "The need for speed is driving more developers to explore parallelism as a way to improve performance. Parallella offers an inexpensive way to experiment with the new paradigm.Groupon’s Software Engeineering Team invited me to share some Parallella explorations during Geekfest this afternoon. Slides from the presentation appear below: Source code for the WebSockets demo is available on GitHub. Additional sample code for Parallella can be found in the Parallella GitHub repo.To Groupon: Thanks for the invitation!",
      "url": " /blog/2016/03/08/parallelism-at-geekfest/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-02-26-confoo-in-montreal": {
      "title": "ConFoo in Montreal",
      "content"	 : "ConFoo is a nine-track conference for web developers, held every year in Montreal, Canada. Multiple languages and framework are represented: Python, .Net, Ruby, C#, JavaScript… the works. ConFoo also offers a healthy helping of IoT including Arduino and Raspberry Pi. This year, the organizers invited yours truly to present Parallella. Thanks organizers!SlidesSlides appear below.",
      "url": " /blog/2016/02/26/confoo-in-montreal/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-02-10-git-config-for-parallella": {
      "title": "Git Config for Parallella",
      "content"	 : "Git is the dominant version control system for open source software. When you first burn a Parallella image, git is installed, but it’s configured with the name and email address for the CEO of Adapteva, makers of the Parallella. This article shows a quick way to update your Parallella’s git config with your own information.Why You Might CareEvery time git records one of your changes, it includes the name of the person who made the change. If you’re the one improving the code on your Parallella, you might as well get credit for it, right?Finding the Current Git ConfigTo find the current Git user on your Parallella, use the following commands from the console (or you can use ssh).$ cat ~/.gitconfig[user]    email = [masked-email-address]@adapteva.com    name = aolofsson$ Here’s an alternative way to view the git configuration…$ git config --listuser.email=[masked-email-address]@adapteva.comuser.name=aolofsson$ The odds are one in 7 billion that you are this particular Andreas Olofsson :-)Making the Config Your OwnTo update the git config with your own information…$ git config --global user.name &quot;Pat Jones&quot;$ git config --global user.email patjones@example.comAnd then verify the changes…$ cat ~/.gitconfig[user]    email = patjones@example.com    name = Pat Jones$ Success!",
      "url": " /blog/2016/02/10/git-config-for-parallella/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-01-21-blue1647-iot-chicagoruby": {
      "title": "BLUE1647, IoT, &amp; ChicagoRuby",
      "content"	 : "BLUE1647 is an amazing maker space on the South Side of Chicago. Each month ChicagoRuby hosts an event at the space.This month featured the Internet of Things (IoT).What does IoT mean for Ruby developers? How can someone with a web development background begin exploring IoT? And why would a web developer care?Video + SlidesVideo and slides for the evening’s presentation appear below. WindyCityThingsIf you’re exploring the connection between IoT and ROI, you might like WindyCityThings, coming to Chicago in June 2016. Check it out!AcknowledgementsThank you BLUE1647 for hosting another great ChicagoRuby event!",
      "url": " /blog/2016/01/21/blue1647-iot-chicagoruby/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-01-18-firefox-404-lunrjs": {
      "title": "Firefox, 404, and lunr.js",
      "content"	 : "The search function on this blog is powered by lunr.js. This post was inspired by a search question in the blog comments:  Is it me or does it not work in Firefox?~Jason (from the blog comments)Of course lunr.js works with Firefox, right? I tested the search page in Chrome and Safari before launch. But I took Firefox for granted. The US Navy Seals have a saying: Assumption is the mother of all [screw]-ups.“Haha!” said Firefox when I tried to run search. It threw up the “404” page. This post documents the problem and the solution.Isolating the ProblemThrough Google, Stack Overflow, and trial &amp;amp; error I isolated the problem to a single line of JavaScript code in search.js.  $(&quot;#site_search&quot;).submit(function(){      event.preventDefault(); // Problem.      var query = $(&quot;#search_box&quot;).val();      var results = window.idx.search(query);      display_search_results(results);  });Explaining the ProblemWhen a web browser encounters this function in the script, it will attempt to open a page instead of running the script on that page. The command event.preventDefault(); is supposed to stop the page from opening so the script can run instead. Chrome and Safari handled this fine. But Firefox tried to open a non-existing page, and that led to the 404. What could we do about it?Getting HelpFortunately, a ChicagoRuby meeting was only one day away. ChicagoRuby has many members who are passionate polygots, not just Rubyists.After the meeting, I reproduced the problem for Justin Love and Darren Holland. In addition to being a co-organizer of ChicagoRuby, Justin is a JavaScript enthusiast and a co-organizer of the Chicago JavaScript group. Darren has strong skills in Ruby and JavaScript.We managed to isolate the problem further by strategically inserting alert statements in search.js. We tested each iteration against Chrome and Firefox. Chrome continued to succeed. Firefox continued to fail. The alert statements helped us to verify the point of failure.Collaboration and SolutionAfter several minutes of collaboration, Darren theorized that event.preventDefault(); was choking in Firefox because the event object was not explicitly passed. Chrome and Safari were running the same JavaScript code, and they assumed that event meant event even though no object had been passed. But maybe Firefox wanted to be explicitly told what object was being passed?One way to find out: We added event to the function definition as follows:  $(&quot;#site_search&quot;).submit(function(event){Next, we re-started the Jekyll server. And it worked! Firefox browsers can use the search page with great results. The problem wasn’t in lunr.js. It was in a single line of search.js, the JavaScript file that communicates with lunr.js.Lessons LearnedKey takeaways from this experience:      Firefox, Chrome, and Safari handle JavaScript differently. Always be testing.        Before asking for help, make sure you can re-produce the problem. Justin and Darren were able to wrap their heads around this challenge because the constraints and behavior were clearly defined.        When smart people challenge each other to grow, great things happen. That’s the ChicagoRuby motto, and it is completely true, especially when we collaborate on a troubleshooting mission.  Git RocksOnce again, Git proves to be awesome. We performed all of our troubleshooting steps in a separate branch called firefox. Advantages of this approach:      The separate branch enabled us to experiment confidently and aggressively, knowing that we could always go back to square one (master) if troubleshooting caused serious damage.        After we created a working solution in the firefox branch, we tested it thoroughly, and merged it into the master branch.        While writing this article, re-creating the problem was as easy as checking out one of the broken commits in the firefox branch. The master branch remained pristine throughout.  AcknowledgementsSpecial thanks to the following people for turning this into a learning experience:      Jason (last name unknown) for bringing the problem to my attention via the blog comments.        Darren Holland and Justin Love for collaborating on the solution.  ",
      "url": " /blog/2016/01/18/firefox-404-lunrjs/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-01-16-using-failure-to-succeed": {
      "title": "Using Failure to Succeed",
      "content"	 : "  I’ve missed more than 9,000 shots in my career. I’ve lost almost 300 games. 26 times, I’ve been trusted to take the game winning shot and missed. I’ve failed over and over and over again in my life. And that is why I succeed. ~Michael JordanFailure is nothing more than honest feedback. With the right attitude, and with discipline, we can learn from things that don’t work, rebuild, and eventually succeed.Several years ago, Peter Harkins of DevMynd Software summarized the idea in the above graphic.Powering forward toward success takes lots of practice. Gladwell says 10,000 hours of practice. Perhaps you are like me. I need to be reminded of this from time to time.",
      "url": " /blog/2016/01/16/using-failure-to-succeed/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-01-12-how-to-record-screencasts-with-or-without-quicktime": {
      "title": "How to Record Screencasts With or Without QuickTime",
      "content"	 : "Live coding in front of an audience can be exciting, except when there’s a glitch. Make one typo during your demo and you could spend the rest of the presentation troubleshooting while hundreds of onlookers watch you struggle. Not fun. I’ve been there, and it hurts.Feel the Pain and Fix ItOne day, after causing a live coding hiccup during a presentation, I vowed to squash all typos by recording my demos in advance instead of live typing. Tools of choice:      For software recording, Apple’s QuickTime        For hardware recording, Elgato Game Capture HD60  This post shows how QuickTime and Elgato can work for you.Using QuickTimeIf you have a Mac with QuickTime installed, you have everything you need. Yes, there are other screencast tools out there. I use QuickTime because it’s simple and it comes pre-installed on the Mac. Here’s a procedure that works:      Setup your desktop exactly as you want it to appear in the recording.        Go into your Applications folder and start QuickTime.        Choose File | New Screen Recording. Decide whether to include audio with your recording. I rarely include audio because most of my screen recordings are for live presentations where I will be present and speaking to a live audience.        Drag your mouse to specify the area of the screen that you want to record.        Click the red Record button.        Do your demo. It doesn’t matter what you do, everything within the selected recording area will be recorded.        Click the Stop button when you’re done. Gotcha: The first time I recorded with QuickTime, it took me several minutes to find the stop button! It’s the round black dot on the top menu bar.        Save your video, and trim it as desired.        If you’re using Apple’s Keynote presentation software, you can addthe video to your presentation via drag &amp;amp; drop.  Congrats… no more live typing!Hardware for Recording HDMI OutputAnother gotcha: I banged my head against the wall for several days, exploring multiple screencast recording alternatives for Linux on the Parallella. None of the software solutions worked as required. But one hardware solution, smaller than an iPhone and available for $150 at Best Buy, worked immediately: Elgato HD60.This image shows a Parallella (with green case supports), Elgato HD60 (rectangular with rounded corners), and an HDMI monitor.The Elgato even records screen activity from the Parallella’s frame buffer. The Elgato can record anything that gets displayed on an HDMI monitor. Recording is easy because the Elgato sits right in the middle of the HDMI flow; it connects to the Parallella’s HDMI output and the monitor’s HDMI input. If you’re recording screen activity on Parallella running Linux, save yourself a headache and use an HDMI capture device like Elgato.Shorter Videos are BetterPersonal preference: I think that short (less than 30 seconds) videos are better for a live presentation. Thirty seconds is enough time to demonstrate a point, but not so long that the audience gets bored watching a video. This Parallella presentation includes multiple 10- to 30-second videos showing prime number calculations. Some are recorded via QuickTime, others with the Elgato hardware. The videos are woven together with other material.More Value for the AudienceTyping in front of a live audience presents challenges. It can be powerful, but like any live performance, it needs to be virtually flawless in order to work well. The important part of software development is the thinking, not the typing. When we record the typing in advance, we reduce the risk of glitches and we deliver more value for the audience.",
      "url": " /blog/2016/01/12/how-to-record-screencasts-with-or-without-quicktime/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-01-04-how-to-make-lunrjs-jekyll-work-together": {
      "title": "How to Make lunr.js and Jekyll Work Together (with Gotchas)",
      "content"	 : "lunr.js delivers fast search results because the entire search process happens in the browser. There is no network delay because the network never gets touched during the search.Speed is one reason why this blog uses lunr.js for search. If you run a Jekyll-based blog, this post will tell you how to make lunr.js work for you. Gotchas (and solutions) are shared within.Big PictureBefore we get into the details, let’s review how lunr.js works from a big picture perspective:      Jekyll builds static pages whenever we run the $ jekyll build or $ jekyll serve commands. Long before a user runs a search, and every time the Jekyll site gets built, lunr.js combines all of the text from all of the blog posts into a single JSON file called _site/search_data.json.        search_data.json is a template that tells Jekyll how to generate _site/search_data.json. Both files are named search_data.json; they differ in content and directory location. The template, search_data.json, sits at the root of your local Jekyll directory.        You only need to create the search_data.json file at the root of your Jekyll directory. The generated JSON file, _site/search_data.json, does not exist until the first time you run the Jekyll build process. Samples of _site/search_data.json and search_data.json appear below.        The generated JSON file, _site/search_data.json, gets re-generated (and overwritten) every time you run the Jekyll build process. That way, lunr.js will always have fresh data to search.        When the user visits your Jekyll site, _site/search_data.json (the generated JSON file) gets downloaded in the background, along with the HTML, CSS, image, and other files that the user sees while viewing the site. The generated JSON file remains on the user’s machine, stored by the browser.        When the user makes a search request, the lunr.js executable in the browser searches the local copy of the generated JSON file, the one that was downloaded in the background. Searches are fast because lunr.js only looks at one local file.  Now, the details.Why JSONWhy does lunr.js store data in a JavaScript object notation (JSON) file? Primary reason: Speed. JSON files only contain keys and values. That’s it.For example, here’s the JSON data for one blog post on this site: IoT Without the Hype.    &quot;blog-2015-12-17-iot-without-the-hype&quot;: {      &quot;title&quot;: &quot;IoT Without the Hype&quot;,      &quot;content&quot; : &quot;Every great technology started as a toy. People played with kites and paper airplanes for thousands of years before the Wright Brothers achieved powered flight. Ada Lovelace and Charles Babbage toyed with the analytical engine over a hundred years before the digital computer.Toys Become Useful ProductsToday, IoT enthusiasts fly toy drones, while professional photographers use similar devices to capture breathtaking photos. IoT youth groups build and compete with toy robots, while warehouse managers use industrial versions of the same robots to reduce costs and speed up delivery times.The Internet of Things is grown up and ready to do real work. All it needs is you.Slides and video appear below.LinuxBarbados: Thanks!Thank you to the LinuxBarbados organizers for the opportunity to participate in the discussion.&quot;,      &quot;url&quot;: &quot; /blog/2015/12/17/iot-without-the-hype/&quot;,      &quot;author&quot;: &quot;&quot;,      &quot;categories&quot;: &quot;community, education, iot&quot;    }Every blog post has an entry like the one shown above. Take a look at the current _site/search_data.json file for RayHightower.com. This is what lunr.js searches to produce fast results for visitors.Now, here’s how to make lunr.js work for you.Download lunr.min.js (Minified)Download lunr.min.js from lunrjs.com and store it in the /js/ directory of your Jekyll project. The min designation means that the file is minified. lunr.js consists of several JavaScript files that you can download and view individually if you’re curious. However, when it’s time to execute, the minified file will load and run faster because it’s a single, smaller file.Create /js/search.jsCreate a file called /js/search.js. This is a JavaScript program that calls lunr.js for search results. You will need to customize search.js for your Jekyll site by specifying the file names and field names that you’re using.The following /js/search.js is currently in use at RayHightower.com. It’s  customized for this site, and based on the resources listed at the end of this blog post.jQuery(function() {  // Initialize lunr with the fields to be searched, plus the boost.  window.idx = lunr(function () {    this.field(&#39;id&#39;);    this.field(&#39;title&#39;);    this.field(&#39;content&#39;, { boost: 10 });    this.field(&#39;author&#39;);    this.field(&#39;categories&#39;);  });  // Get the generated search_data.json file so lunr.js can search it locally.  window.data = $.getJSON(&#39;/search_data.json&#39;);  // Wait for the data to load and add it to lunr  window.data.then(function(loaded_data){    $.each(loaded_data, function(index, value){      window.idx.add(        $.extend({ &quot;id&quot;: index }, value)      );    });  });  // Event when the form is submitted  $(&quot;#site_search&quot;).submit(function(event){      event.preventDefault();      var query = $(&quot;#search_box&quot;).val(); // Get the value for the text field      var results = window.idx.search(query); // Get lunr to perform a search      display_search_results(results); // Hand the results off to be displayed  });  function display_search_results(results) {    var $search_results = $(&quot;#search_results&quot;);    // Wait for data to load    window.data.then(function(loaded_data) {      // Are there any results?      if (results.length) {        $search_results.empty(); // Clear any old results        // Iterate over the results        results.forEach(function(result) {          var item = loaded_data[result.ref];          // Build a snippet of HTML for this result          var appendString = &#39;&amp;lt;li&amp;gt;&amp;lt;a href=&quot;&#39; + item.url + &#39;&quot;&amp;gt;&#39; + item.title + &#39;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&#39;;          // Add the snippet to the collection of results.          $search_results.append(appendString);        });      } else {        // If there are no results, let the user know.        $search_results.html(&#39;&amp;lt;li&amp;gt;No results found.&amp;lt;br/&amp;gt;Please check spelling, spacing, yada...&amp;lt;/li&amp;gt;&#39;);      }    });  }});Update: An earlier version of search.js did not work well with Firefox. Details on the problem and the solution: Firefox, 404, and lunr.jsYou will observe that search.js looks at fields defined by search_data.json. The { boost: 10 } parameter tells lunr.js to give extra weight to words in the content section of each blog post. You might choose to boost a different field depending on what’s most important on your blog or site.Create the search_data.json TemplateCreate a file called /search_data.json at the root of your Jekyll site, and fill it with the following:---layout: null---{  {% for post in site.posts %}    &quot;{{ post.url | slugify }}&quot;: {      &quot;title&quot;: &quot;{{ post.title | xml_escape }}&quot;,      &quot;content&quot; : &quot;{{post.content | strip_html | strip_newlines | remove:  &quot;&quot; | escape | remove: &quot;&quot;}}&quot;,      &quot;url&quot;: &quot; {{ post.url | xml_escape }}&quot;,      &quot;author&quot;: &quot;{{ post.author | xml_escape }}&quot;,      &quot;categories&quot;: &quot;{% for category in post.categories %}{{ category }}{% unless forloop.last %}, {% endunless %}{% endfor %}&quot;    }    {% unless forloop.last %},{% endunless %}  {% endfor %}}Every time you run Jekyll’s build process, Jekyll will use /search_data.json to determine where to look and what to grab as it generates _site/search_data.json.Create a Search PageNext, you need to create a page where the user can execute a search. The search page for this blog is located at http://rayhightower.com/search/. The following snippet displays the search box, search button, and search results:---layout: nonavtitle: Search---Powered by &amp;lt;a href=&quot;/blog/2016/01/04/how-to-make-lunrjs-jekyll-work-together/&quot;&amp;gt;lunr.js&amp;lt;/a&amp;gt;.&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;form action=&quot;get&quot; id=&quot;site_search&quot;&amp;gt;&amp;lt;center&amp;gt;  &amp;lt;input style=&quot;font-size:20px;&quot; type=&quot;text&quot; id=&quot;search_box&quot;&amp;gt;  &amp;lt;input style=&quot;font-size:20px;&quot; type=&quot;submit&quot; value=&quot;Go!&quot;&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/form&amp;gt;&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;ul id=&quot;search_results&quot;&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;script src=&quot;/js/lunr.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script src=&quot;/js/search.js&quot;&amp;gt;&amp;lt;/script&amp;gt;And now you’re done. At this point, you should be able to search your Jekyll-powered blog using lunr.js.GotchasHere are the gotchas that I encountered while getting lunr.js to work. Hope this saves you time:      The biggest gotcha for me: Figuring out how all of the lunr.js pieces fit together. Some of the steps seem non-sensical until the “why” behind each step is known. That’s why the beginning of this article addresses the big picture. Once the big picture is clear, everything else falls into place.        The lunr.js examples that I found show how to point search_data.json toward blog posts, but not the other pages on the site. I need to include About, Speaking, and If in my results. I hacked a solution in /search_data.json. The hack works for now, but I’m sure there’s a better way.        The lunr.js engine appeared to ignore some results until I dug deper into the problem. For example, searching for the term “Cape Town” initially produced zero results, even though the term exists on the Speaking page. To solve the problem, I cheated: I added a space after “Rubyfuza” and before &amp;lt;br/&amp;gt; on the Speaking page. This solution feels like a hack to me. If you know of a cleaner way, feel free to mention it in the comments below.        An earlier version of search.js did not work well with Firefox. Details on the problem and the solution: Firefox, 404, and lunr.js  AcknowledgementsSpecial to the following sources for their posts and code examples:  Oliver Nightingale - creator oflunr.js.  Jekyll Tips - solid tutorialsfor Jekyll users.  Katy DeCorah, Kurtis Kemple, and Josh Beam - bloggers who filled some of the gaps in my Jekyll knowledge.  Official lunr.js documentation - the officialresource.",
      "url": " /blog/2016/01/04/how-to-make-lunrjs-jekyll-work-together/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2016-01-02-jekyll-github-lunrjs": {
      "title": "Jekyll + GitHub + lunr.js",
      "content"	 : "This blog is built on three powerful tools, commonly used in the open source community:      Jekyll, the Ruby-based static page generator. Static pages are fast because there’s no database to hit.        GitHub, the collaboration tool for developers. Also useful for hosting and its content delivery network.        lunr.js, which gives visitors fast search capabilities. lunr.js is fast because search requests never hit the network. The entire search workflow happens in the browser.  Members of ChicagoRuby: North Shore gathered on Saturday, January 2, 2016 to share experiences and ideas with these key tools. Slides appear below.For details on getting lunr.js to work with your Jekyll-powered site, check out How to Make lunr.js and Jekyll Work Together (with Gotchas).",
      "url": " /blog/2016/01/02/jekyll-github-lunrjs/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-12-17-iot-without-the-hype": {
      "title": "IoT Without the Hype",
      "content"	 : "Every great technology started as a toy. People played with kites and paper airplanes for thousands of years before the Wright Brothers achieved powered flight. Ada Lovelace and Charles Babbage toyed with the analytical engine over a hundred years before the digital computer.Toys Become Useful ProductsToday, IoT enthusiasts fly toy drones, while professional photographers use similar devices to capture breathtaking photos. IoT youth groups build and compete with toy robots, while warehouse managers use industrial versions of the same robots to reduce costs and speed up delivery times.The Internet of Things is grown up and ready to do real work. All it needs is you.Slides appear below.LinuxBarbados: Thanks!Thank you to the LinuxBarbados organizers for the opportunity to participate in the discussion.",
      "url": " /blog/2015/12/17/iot-without-the-hype/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-12-09-chicago-acm-and-parallella": {
      "title": "ACM Chicago and Parallella",
      "content"	 : "Thank you to the Chicago Chapter of the Association for Computing Machinery (ACM Chicago) for inviting me to present Parallella: Supercomputer for Embedded Systems at the December 2015 meeting.Slides and video appear below.Learning About ParallelismMoore’s Law is running out. If developers want to extract more performance out of our silicon wafers, we need to explore new programming paradigms like parallelism. The Parallella single board computer offers an inexpensive way for devs to experiment with parallel programming theory. You can get started with Parallella here. Check it out!",
      "url": " /blog/2015/12/09/chicago-acm-and-parallella/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-12-08-how-to-run-headless-parallella": {
      "title": "How to Run a Headless Parallella",
      "content"	 : "Why Headless?Running a computer “headless” means running it with no display, no keyboard, no mouse. The only directly attached cables are power and a network connection.Why would you run a computer headless? Headless configurations are typically used in a data center with hundreds of servers and limited space. Since a well-running server rarely needs direct interaction, you can save space (and money) by skipping the monitor/mouse/keyboard installation, and only connecting these devices when needed.Even better: Don’t connect via USB/HDMI. Why spend time walking to a server and connecting via USB when you can connect electronically over the network? Headless servers rock!This post tells how to connect to a headless Parallella from a Mac. The procedure should work with other Linux/Unix systems with minor minor modifications, depending on the distribution in use.Install XQuartz(You can skip this step if you’re connecting from a Unix or Linux system. Linux/Unix already have X Window installed. Mac OS X does not.)If you only want to run terminal-based programs via ssh, you will not need to install XQuartz. Since Parallella’s GUI programs are X Window based, installing XQuartz will let you run the Parallella’s GUI programs on your Mac.Mac OS X is a variation of Unix, but it does not include the Unix X Window environment. Download and install XQuartz onto the Mac OS X machine. XQuartz will give your Mac the X Window environment needed for this process to work.Configure Host Machine (Parallella) to Allow X Over SSHThe file /etc/ssh/ssh_config controlls the behavior of the SSH server on the Parallella. By default, SSH does now allow X Window information to flow to/from the Parallella. To enable X Window support, here’s what you have to do.(Be sure to read the sudo disclaimer before executing the rest of these instructions. We’re using sudo in this case because ssh_config can only be modified with root priviledges.)First, Open /etc/ssh/ssh_config in a text editor like Vim. You’ll need to use sudo so that the file system allows you to write the file after you modify it.$ sudo vim /etc/ssh/ssh_configTwo parameters in the ssh_config file need to be changed on the Parallella host. Add the following lines to the bottom of the ssh_config file on the Parallella:   ForwardAgent yes   ForwardX11 yesSave the file and re-start the Parallella so that the new parameters can take effect.Confirm the X Window ConnectionTo test the new configuration, first log into the Parallella from the Mac using the -X flag (note that “X” is capitalized) like so:~$ ssh -X linaro@[IP address of the Parallella]linaro@[IP address of the Parallella]&#39;s password:And then, from a Mac terminal window, run an X Window program like xclock.$ xclockThe GUI XClock should appear on your Mac display. Success!Setting Up XvfbXvfb is the X virtual frame buffer. It lets you view the Parallella’s frame buffer through X, either locally or remotely. To set it up, first install Xvfb on the Parallella.$ sudo apt-get install xvfbReading package lists... DoneBuilding dependency treeReading state information... DoneThe following NEW packages will be installed:  xvfb0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.Need to get 629 kB of archives.After this operation, 1351 kB of additional disk space will be used.Get:1 http://ports.ubuntu.com/ubuntu-ports/ trusty/main xvfb armhf 2:1.15.1-0ubuntu2 [629 kB]Fetched 629 kB in 1s (406 kB/s)Selecting previously unselected package xvfb.(Reading database ... 83530 files and directories currently installed.)Preparing to unpack .../xvfb_2%3a1.15.1-0ubuntu2_armhf.deb ...Unpacking xvfb (2:1.15.1-0ubuntu2) ...Processing triggers for man-db (2.6.7.1-1) ...Setting up xvfb (2:1.15.1-0ubuntu2) ...Minor GotchaHere’s something weird. When you install Xvfb on the Parallella via sudo apt-get, the x is lower case. But after installation, when you run the program from the Parallella’s command line, the X in Xvfb is capitalized.$ which xvfbxvfb: Command not found.$ which Xvfb/usr/bin/Xvfb$ I don’t know why this is true. I only know that it caught me. Now it won’t catch you!Eliminating Barriers to EntryI am grateful to other members of the Parallella community who writearticles and blog posts about their experiences with the device.Together, we are working to make parallel programming accessibleto as many people as possible. Maybe you will contribute next? I look forward to reading about your work with Parallella and parallel programming in general.",
      "url": " /blog/2015/12/08/how-to-run-headless-parallella/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-12-02-wrestling-with-internet-of-things-iot": {
      "title": "Wrestling With IoT",
      "content"	 : "The Internet of Things (IoT) is receiving a ton of attention in the press. What does IoT mean for software developers? How can someone with a web development background begin exploring IoT? And why would a web developer care?Video and SlidesThe topic was explored at ChicagoRuby on December 1, 2015. Video and slides appear below. Topic: Wrestling With the Internet of Things. CommoditizationA professional must be a continuous student. A professional who stops learning will fall victim to commoditization. In this context, commoditization means taking a task that was “hard” and making it “easy”. Taking a skill that was once accessible only to a few, and making it accessible to many.For example, early computers were only accessible to the elite few because they were big and expensive. But today, billions of people have access to computing through mobile phones. Many aspects of computing have become commoditized. Any professional operating under the old glass house model is obsolete.A more recent example of commoditization: Any web developer who only builds online brochures has been commoditized by Wordpress and Squarespace.It’s easy to laugh at historical examples of obsolescence. What about obsolescence yet to come? What are we doing to keep ourselves from falling out-of-date?WindyCityThingsIf you’d like to know more about IoT, consider WindyCityThings.AcknowldgementsThank you ThoughtWorks for hosting, WiFi, food, and your ongoing support for the Chicago’s Ruby community. Thanks to my fellow ChicagoRuby organizers for putting me on the agenda.",
      "url": " /blog/2015/12/02/wrestling-with-internet-of-things-iot/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-11-28-order-from-my-table-panera": {
      "title": "Order From My Table",
      "content"	 : "If you own a restaurant that offers WiFi, it can be frustrating to have “customers” camp out at a table all day using the WiFi and buying little. As an owner, you can get mad. Or you can come up with a way to capitalize on the opportunity.Panera found a way to profit from the opportunity.Meet the Need and Get PaidPanera figured out a way to capitalize on the opportunity. When you log on to Panera’s WiFi network, they make it very easy for the WiFi user to order food right immediately. Even better… Panera staff will bring the food to your table! Check out the screenshot.                Anticipating Customer NeedsPanera’s offering is a brilliant example of anticipating a customer need, addressing the need, and getting paid. “Order from my table” addresses owner and customer needs as follows:      A customer on a laptop does not want to risk theft by walking to a cash register. Solution: Handle the whole transaction online, and bring the food to the customer.        Restaurants need cash-producing tables in order to stay in business.  Great move, Panera!",
      "url": " /blog/2015/11/28/order-from-my-table-panera/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-11-27-orange-pi-mini-2-setup-for-mac-os-x": {
      "title": "Orange Pi Setup for Mac OS X",
      "content"	 : "Raspberry Pi was the original low-cost single board computer. Competing products followed, including Beaglebone Black, Parallella, and recently, Orange Pi.The official Orange Pi instructions assume that the user is working on a Windows-based machine. This blog post shows how to prepare an SD-card image using Mac OS X. As with all instruction sets on this blog, the sudo disclaimer applies.OverviewOrange Pi runs Lubuntu, a lightweight version of the Ubuntu Linux distribution. The default credentials are:  Username: orangepi  password: orangepiOrangePi boots really fast. I’m not sure whether this is due to the speed of the SD card, the lightness of the Lubuntu operating system, or both.Grab the Linux SD ImageDownload the Lubuntu image from the Orange Pi website. I’m using the Orange Pi 2 Mini 2. You will need to download the image that is appropriate for your particular Orange Pi.Decompress the Orange Pi Image FileThe xz file compression utility is a handy way to decompress the Orange Pi image. xz installation is painless with Homebrew.$ brew install xz==&amp;gt; Downloading https://homebrew.bintray.com/bottles/xz-5.2.1.yosemite.bottle.tar.gz######################################################################## 100.0%==&amp;gt; Pouring xz-5.2.1.yosemite.bottle.tar.gz🍺  /usr/local/Cellar/xz/5.2.1: 59 files, 1.7MYou can then decompress the Lubuntu image file using xz.$ xz -d Lubuntu_1404_For_OrangePi2-mini2_v0_8_0_.img.xzOnce decompression is complete, the new file will have the .imb extension.$ ls -altotal 7168000drwxr-xr-x    3 rth  staff         102 Nov  9 21:14 .drwx---r-x+ 114 rth  staff        3876 Nov  9 21:25 ..-rw-r-----    1 rth  staff  3670016000 Nov  9 21:08 Lubuntu_1404_For_OrangePi2-mini2_v0_8_0_.imgChoose Your SD Card TargetThis step is critical. When you write the Lubuntu image to your SD card, it’s important to choose the correct SD card designation. Otherwise, you could overwrite the hard drive on your Mac.Here’s how to get the correct designation for the SD card. First use diskutil list to show all of the drives on your Mac.$ diskutil list/dev/disk0   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      GUID_partition_scheme                        *960.2 GB   disk0   1:                        EFI EFI                     209.7 MB   disk0s1   2:                  Apple_HFS MacSSD                  959.3 GB   disk0s2   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3/dev/disk1   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:     FDisk_partition_scheme                        *7.9 GB     disk1   1:                 DOS_FAT_32 NO NAME                 7.9 GB     disk1s1From the diskutil report, we can see that the designation for the SD card is /dev/disk1. Unmount the SD card image.$ diskutil unmountDisk /dev/disk1Unmount of all volumes on disk1 was successfulAfter you unmount the SD card, the diskutil report will appear unchanged. But we need to unmount the SD card so that we can write an image to it.$ diskutil list/dev/disk0   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      GUID_partition_scheme                        *960.2 GB   disk0   1:                        EFI EFI                     209.7 MB   disk0s1   2:                  Apple_HFS MacSSD                  959.3 GB   disk0s2   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3/dev/disk1   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:     FDisk_partition_scheme                        *7.9 GB     disk1   1:                 DOS_FAT_32 NO NAME                 7.9 GB     disk1s1With the SD card unmounted, write Lubuntu image as follows.$ sudo dd if=Lubuntu_1404_For_OrangePi2-mini2_v0_8_0_.img of=/dev/disk1 bs=1mPassword:3500+0 records in3500+0 records out3670016000 bytes transferred in 2366.903418 secs (1550556 bytes/sec)$ diskutil list will let you view the new partitions After the image has been written.$ diskutil list/dev/disk0   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      GUID_partition_scheme                        *960.2 GB   disk0   1:                        EFI EFI                     209.7 MB   disk0s1   2:                  Apple_HFS MacSSD                  959.3 GB   disk0s2   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3/dev/disk1   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:     FDisk_partition_scheme                        *7.9 GB     disk1   1:                      Linux                         43.0 MB    disk1s1   2:                      Linux                         3.6 GB     disk1s2$ Gotcha: The Disk You Inserted…As soon as the disk image finished writing to the SD card, a dialog box popped up with the following error message: The disk you inserted was not readable by this computer.What to do? Ignore the message, hit eject, and remove the SD card from your Mac. When you insert the microSD card into the OrangePi Mini 2, the board should boot immediately. No idea why the error message popped up, and your mileage may vary. Did the Mac suddenly realize that it had been formatting a Linux image all along? Who knows! The important thing: The new image boots the Orange Pi successfully.To Boot Your Orange PiInsert the micro-SD card into the Orange Pi’s micro-SD card reader. Boot the Orange Pi, and it should come up farily rapidly. Congratulations!Next StepsSo far the Orange Pi seems to behave similar to the Raspberry Pi or Beaglebone Black, except the Orange feels faster. This blogger should include benchmarks in a future Orange Pi post.",
      "url": " /blog/2015/11/27/orange-pi-mini-2-setup-for-mac-os-x/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-11-16-parallella-in-5-minutes-rubyconf-2015": {
      "title": "Parallella in 5 Minutes at RubyConf 2015",
      "content"	 : "Thank You Organizers!First things first: Thank you to the RubyConf organizers for inviting me to the lightning talk stage this year. Slides and video appear below: More Details on ParallellaSummarizing Parallella in a 5-minute lightning talk presented a challenge. I had to skip some details. If your appetite has been stimulated and you’d like to know more, here are some resources for you:      25-minute video from Madison+ Ruby in August 2015. Also answers why WisdomGroup experiments with Parallella.        Parallella Quick Start Guide. One of many “getting started” guides.        Solar Powered Parallella. Details on how to rig a USB/power cable and hand-held solar panel to power Parallella.        Official Parallella Site. Great forum discussions.  Doing something interesting with Parallella? Feel free to dash me a message. If there’s a good fit, you might be invited to present at ChicagoRuby!",
      "url": " /blog/2015/11/16/parallella-in-5-minutes-rubyconf-2015/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-11-11-jekyll-chicagoruby-hack-night": {
      "title": "Jekyll: ChicagoRuby Hack Night",
      "content"	 : "Why Jekyll?As software developers, we have a ton of stuff to learn. Our learning is reinforced when we share our learning with others. Blogging and presenting are two ways to share knowledge with our colleagues.Jekyll is a static HTML page generator. Jekyll includes tools that accelerate the blogging process, especially for people who know Ruby, because Jekyll is written Ruby.Why Not CMS?So why not use a content management system (CMS) like Wordpress? There’s nothing wrong with Wordpress. But CMS-generated pages will always be served slower because of the calls to the database. But static HTML pages are just sitting on the storage device, ready to be propelled across the internet as requested.Sometimes you want a CMS. Other times, you need the speed of statically generated pages. It all depends on the objective of the project.15 Minutes of SlidesEvery hack night starts with 10 to 15 minutes of introduction, followed by two hours of hands-on-the-keyboard hacking. This set of slides is designed for quick review.More Jekyll?Any time you attend a ChicagoRuby event, like a hack night, feel free to share feedback with the organizer team. Your insights will help to make ChicagoRuby better for all members.Thank you!",
      "url": " /blog/2015/11/11/jekyll-chicagoruby-hack-night/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-10-29-rubyconf-colombia-conference-with-a-mission": {
      "title": "RubyConf Colombia: A Conference With A Mission",
      "content"	 : "  Let’s talk about software and leave our past behind.~Juan Pablo BuriticaJuan Pablo Buritica and his team from Ride organized RubyConf Colombia in Medellín this month. The organizers ran JSConf Colombia concurrently with the Ruby conference. What a feat of logistical legerdemain!Yes, the technical presentations were powerful. Even more inspiring: RubyConf Colombia is a technical conference with a mission to change the reputation of Colombia.Confronting the Problem Head-OnJuan Pablo confronted the problem directly in his opening remarks at the conference. He acknowledged that Colombia has a troubled past, and some people would like to permanently tie Colombia to that past. But the past is not the future. People in Juan Pablo’s generation are aggressively improving things for themselves and for future Colombians. RubyConf Colombia is one example of their work.                So the organizers invited technology speakers from around the world to participate. They attended to every detail. They even arranged simultaneous translations (Spanish-to-English and English-to-Spanish) for the presentations. Some of the organizers, bi-lingual acrobats that they are, served as translators themselves. You could recognize their voices over the headphones… pretty cool!Invitation: Thank You Organizers!The conference organizers were kind enough to invite me to speak at this inaugural event. Thank you organizers! Video and slides appear below:  Looking AroundRubyConf Colombia was my first visit to South America, and my longest visit to a predominantly Spanish-speaking region. So it was important to get out and see some of the surrounding area, not just bury my head in my laptop.A small group of us visited the Parque Arvi Nature Reserve just outside of Medellín. Getting to the park required a journey by cable car. The cable cars travel above mountainside neighborhoods and wide stretches forest. The views are beautiful.                The Best Vegetarian BurgerEven with my long list of allergies, I was able to find great food in Medellín. For example, the best vegetarian burger ever conceived by humans was served to me at Veg Station on Calle 10. The photo does not do this meal justice!                Next TimeCongrats to the RubyConf Colombia organizers for launching a successful event. I look forward to the success of your mission!",
      "url": " /blog/2015/10/29/rubyconf-colombia-conference-with-a-mission/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-10-23-research-or-ready-fire-aim": {
      "title": "Research, or Ready-Fire-Aim?",
      "content"	 : "  First rule of user research: Never ask anyone what they want.~Erika Hall, author of “Just Enough Research”It is popular to view entrepreneurs as risk takers. After 20+ years running WisdomGroup, I’m not sure that’s an accurate view. From what I’ve observed, successful entrepreneurs will reduce risk before launching a venture. Consider a road full of potholes. Most people would avoid such a road. But if the benefits at the end of the road are big enough, an entrepreneur will devise ways to navigate over and around the obstacles.Some people avoid risk outright. Entrepreneurs reduce risk through creativity.Risks in Software DevelopmentOne risk in software development: What if the software solves a problem that nobody cares about? You could spend millions of dollars building software that never generates a return on investment.Just Enough Research by Erika Hall offers ways to study users so that software makers can build products that meet user needs. When needs are met, people will buy.Observation Beats AskingHumans are funny creatures. If someone asks us outright what we need, we don’t always know how to answer.      It’s difficult for us to observe ourselves; we’re too close to the object of study.        We don’t always know the list of available options.  The best user research is conducted by a curious yet non-judgmental third party. Interviews are helpful if the questions are open-ended and if the interviewer listens well.Reduce Risk. Maximize Return.Hall shares war stories about clients who wanted to move forward on a project without research. When a client has spent decades in their profession, they should automatically know their customers intimately, right?Not necessarily. If we want to woo paying customers, we need to see our products and services through their eyes, not our own. The sign-up form we built that seems second nature to us might be counterintuitive to users. This is not a question of intelligence, but personal experience.Early in the book, Hall cites the Segway as an example of a well-engineered product that few people actually bought. Most Segways in use today are in warehouses, a niche purpose that the was not originally intended by the inventors. Segway is brilliantly engineered, but it’s less useful than a car and 8x the cost of a good bike. Not the best place to be if you want to build a company.Competitive ResearchSometimes in our entrepreneurial hubris we are tempted to exclaim “My product is so new, so cutting edge, that nobody else is making it. I have no competition!” Not true, says Hall.Our competition is anything that the customer might do instead of buying our product or service. Sometimes our competition is… the option to do nothing! Humans are creatures of intertia and habit. We find it easier to do things today exactly as we did yesterday. If we choose to offer a brand new product, we have to fight customer inertia. And that can be tough.ConclusionJust Enough Research is a worthwhile read for anyone who builds products. It’s written for people in the web development industry, but the lessons apply to any product that a customer might buy.",
      "url": " /blog/2015/10/23/research-or-ready-fire-aim/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-10-05-windycityrails-2015-recap": {
      "title": "WindyCityRails 2015 Recap",
      "content"	 : "What an adventure… WindyCityRails 2015 achieved record attendance. Feedback has been amazing. Thank you speakers, sponsors, and attendees for making everything happen so well!Here’s a 2-minute video recap of WindyCityRails 2015: Thank You TeamThank you to every member of the organizer team for making the conference a success. Specifically:  Kevin Zolkiewicz – conference manager.  Bobby Reyes – master of ceremonies.  LaToya Allen – master of ceremonies.  Alonda McCree – logistics.  Ryan Nanni – videography.  Michael Zarowny – videography.  Tonya Johnson – media management.  Monty Ksycki – photography.  Justin Love – organizer.  Marty Lavin – organizer.  Sterling Hankins – organizer.As always, if you have ideas or suggestions for a future WindyCityRails, go ahead and let the organizers know. We always enjoy hearing from you.",
      "url": " /blog/2015/10/05/windycityrails-2015-recap/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-08-31-boost-your-skills-and-network-windycityrails": {
      "title": "Boost Your Skills, Boost Your Network at WindyCityRails",
      "content"	 : "WindyCityRails is on track to sell out this year. You could be part of the group that achieves the goal. Use discount code CHICAGORUBY for $50 off before 9/5/2015. Register now.New to Rails?What if you’re new to Rails? Should you attend? Yes. WindyCityRails is one of the best ways to build your network of fellow professionals. Our skills get stronger when we challenge each other in positive ways.Rails Veteran?Should Rails veterans attend? Yes. Every presentation will address the problems we face as a Rails app grows. Every speaker has wrestled with scaling issues. You’ll learn how to balance theoretical computer science against the urgent need to get things done. Refactoring, testing, performance, cloud management, the future of Rails… topics you need to know in order to grow to the next level.Further, WindyCityRails attracts the kind of speakers who mix and mingle with the audience. Want to dig deeper into a scalability problem? Grab a chair next to one of the speakers and have a conversation!Entrepreneurs and InvestorsEntrepreneurs should attend WindyCityRails if they’re looking to build the next great technical team. Investors might discover the next Rails success story to invest in.Rails Success StoriesWhat success stories are built with Rails? Start with the WindyCityRails sponsors: Financial powerhouses like Avant, Braintree, and Enova head the list. Centro uses Rails to revolutionize the advertising industry. Reverb is a favorite of musicians, and Hired has clever ideas about building teams of talent.Skillcrush lists 30+ successful companies using Rails. Yours could be next!Developers, designers, entrepreneurs, and investors all find value in WindyCityRails.Hands On Learning w/BraintreeOpen source is even more exciting when you give back to the community. Braintree is running an Open Source Lounge that will show you how.   Smart People. Learning Together.When smart people challenge each other to grow, great things happen. Add your brain to the mix, and let’s grow together. Use the promo code CHICAGORUBY to save $50 when you register now.See you on Sept 17th!",
      "url": " /blog/2015/08/31/boost-your-skills-and-network-windycityrails/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-08-28-when-at-is-a-tweets-first-character": {
      "title": "When &quot;@&quot; is a Tweet&apos;s First Character",
      "content"	 : "Something we should know about putting an “@” in the first character position on Twitter…Limited VisibilityWhen you start a tweet with a Twitter handle (with the “@” in the first character position) Twitter interprets that as a message to another Twitter user. Only people who follow both the sender and receiver will see the message in their stream.For example, if this tweet is sent from the @ChicagoRuby handle, only people who follow both @ChicagoRuby and @WindyCityRails will see it in their streams:  @WindyCityRails speakers announced! SOLID, engines, Kubernetes, Capybara, performance. Check them out! http://ow.ly/NsP0kAttendees who only follow @ChicagoRuby or @WindyCityRails (not both) will never see this tweet in their Twitter stream.Sometimes You Want It That WayThink of an “@” reply as a way to chat with another person, and you don’t mind if other people overhear the conversation. In fact, sometimes an eavesdropper can add value to the conversation. Twitter is kind of like real life in that way.Normal VisibilityFor normal visibility, start the tweet with any character other than “@”. Some people will start with a “.” in the first position. For example:  .@WindyCityRails speakers announced! SOLID, engines, Kubernetes, Capybara, performance. Check them out! http://ow.ly/NsP0kOr you can re-phrase the tweet entirely. Just be sure to keep the “@” out of the first character position. For example:  Speakers announced for @WindyCityRails! SOLID, engines, Kubernetes, Capybara, performance. Check them out! http://ow.ly/NsP0kTry It OutIf you have multiple Twitter accounts that you can experiment with, try out a few combinations and you’ll see this behavior in action.",
      "url": " /blog/2015/08/28/when-at-is-a-tweets-first-character/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-08-22-madison-ruby-and-parallella": {
      "title": "Madison+ Ruby and Parallella (with Video)",
      "content"	 : "Parallella is a single-board computer roughly the size of a credit card or Raspberry Pi. It runs Linux. It has 18 processor cores, two ARM and sixteen RISC. You can buy this device online for about $150.00.The Madison+ Ruby organizers invited me to present Parallella at the conference earlier today. Video and slides appear below.    Thank You Madison+ RubyMadison+ Ruby has delivered a great experience for five years. Sadly, 2015 marks the last year for the conference. They will be missed.Thank you Jim and Jen Remsik for a great conference. I wish you well with everything you choose to do in coming years.More on ParallellaFuture computers will achieve faster performance through parallelism. If you want to learn more about this trend, consider exploring Parallella for yourself. The Parallella Quick Start Guide might be useful.Source code and schematics for Parallella can be found on GitHub(Parallella | Adapteva).",
      "url": " /blog/2015/08/22/madison-ruby-and-parallella/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-08-03-designed-at-west-point-3d-printed-at-blue1647": {
      "title": "Designed at West Point. 3D Printed at BLUE1647.",
      "content"	 : "                Experimenting with Parallella? Then you might need a way to protect it. The original acrylic cases are no longer available. Fortunately, 3D printing offers a solid alternative.A highly-expandable 3D-printable case was designed by a team at the United States Military Academy at West Point: Professor Suzanne J. Matthews and Master Machinist William (“Frank”) Blackmon. Professor Matthews uses Parallella when teaching high-performance computing courses.Simple, Expandable DesignThe West Point case only has three parts! You combine the three parts at will to accommodate multiple Parallella cluster configurations.                                Internal Honeycomb StructureEngineering details make a big difference in project like this. While the flat portions of the case are printing, the internal honeycomb structure is visible. I suspect that the honeycomb gives the panels greater strength while reducing costs and shortening the print time. Product engineering considers factors that users never see at the surface.                3D Printing Process (w/gotchas)I asked Patrick Harris, CEO of iMagine-it-Tech, to guide me through the process. iMagine-it-Tech is based at BLUE1647. Here are a few lessons (with gotchas to avoid):      Thingiverse is a great resource for STereoLithography (STL) files.        Whether you own your own 3D printer or not, grab a copy of the MakerBot Desktop software. The software will let you view and manipulate STL files at will. Versions are available for Mac OS X, Windows, and Linux.        If the build plate has room for multiple copies of your object, print them. Here’s why: 3D-printing is in its infancy and results are less than perfect. If a part does not come out as designed, and you’ve printed multiple copies, you might have an extra to fall back on.                    Keep the build plate absolutely level. The build plate is the platform where MakerBot deposits material to form the 3D-printed object. If the build plate is even slightly skewed, you could end up with spaghettification, noodle-like strings of filament all over the place. Not fun.                  Print with the flat-side of the object down against the build plate. 3D printing does not do well with overhangs.After PrintingThe Dremel Tool has become one of the most valuable tools in my maker kit. For this project, it was helpful to use the Dremel for edge-smoothing and screw-shortening.                Screws RequiredYou can secure the Parallella circuit board to the bottom side of the case with four sheet metal screws, size #4. The 3/8” screws extended beyond the bottom of the case, so I trimmed them a bit with a Dremel.                ConclusionThis is the best 3D-printed case for Parallella that I have found so far, mainly because it is stackable and expandable.Professor Matthews continues to author instructional materials that focus on parallel processing, with Parallella as the learning tool of choice. I look forward to reading more of the materials.",
      "url": " /blog/2015/08/03/designed-at-west-point-3d-printed-at-blue1647/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-07-31-peters-laws": {
      "title": "Peter&apos;s Laws",
      "content"	 : "Walking through Chicago’s Museum of Science and Industry, I ran across an inspiring list of rules titled “Peter’s Laws”. Peter Diamandis is Chairman and CEO of the X PRIZE Foundation, best known for its $10 million Ansari X PRIZE for private spaceflight.The Laws:If anything can go wrong, Fix It!  (To hell with Murphy!)When given a choice-Take Both!Multiple projects lead to multiple successes.Start at the top then work your way up.Do it by the book....but be the author!When forced to compromise, ask for more.If you can&#39;t beat them, join them, then beat them.If it&#39;s worth doing, it&#39;s got to be done right now.If you can&#39;t win, change the rules.If you can&#39;t change the rules, then ignore them.Perfection is not optional.When faced without a challenge, make one.&quot;No&quot; simply means begin again at one level higher.Don&#39;t walk when you can run.Bureaucracy is a challenge to be conquered with a righteous attitude, a tolerance for stupidity, and a bulldozer when necessary.When in doubt: THINK!Patience is a virtue, but persistence to the point of success is a blessing.The squeaky wheel gets replaced.The faster you move, the slower time passes, the longer you live.True, some of the “Laws” are over-the-top! My favorite from the list: #1. An excellent way to deal with obstacles.",
      "url": " /blog/2015/07/31/peters-laws/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-07-23-how-to-pronounce-os-x": {
      "title": "How to Pronounce OS X",
      "content"	 : "What’s the correct way to pronounce the name of Apple’s Macintosh operating system, OS X? You can find the answer by asking OS X directly from the command line, as shown in this 11-second video. Note the difference between “OS X” with an upper-case “X” vs “OS x” with a lower-case “x”.",
      "url": " /blog/2015/07/23/how-to-pronounce-os-x/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-07-22-github-pages-quick-start-guide": {
      "title": "GitHub Pages: Quick Start Guide",
      "content"	 : "GitHub Pages lets any holder of a GitHub account host static HTML pages at no cost. The bigger benefit: Pages hosted at GitHub automatically become part of GitHub’s content delivery network (CDN). People who visit your site will get faster page loads because of the CDN.This article focuses on interacting with GitHub Pages via Git at the command line. The browser-based automatic page generator is already well-documented. Another purpose of this post: To put useful information about GitHub Pages all in one post, so I won’t have to go hunting around next time I forget this procedure!Quick StartA quick way to launch a “Hello World!” page via GitHub Pages…      Create a GitHub account for yourself.        Create the repo where you want to publish a GitHub page. For example, random-repo. Be sure to make the repo public, and don’t initialize it with a README file.                        Clone the repo on your local machine.        cd into the random-repo directory.  $ git clone git@github.com:RayHightower/random-repo.gitCloning into &#39;random-repo&#39;...warning: You appear to have cloned an empty repository.Checking connectivity... done.$ cd random-repo$                 Don’t worry about the “cloned an empty repository” message. We’ll add something very soon!      Create and checkout the gh-pages branch in the repo.        Create a file called index.html in the gh-pages branch.        Using a text editor (or the fancy shortcut shown below) add the line “Hello World” to the index.html file.  $ git checkout -b gh-pages$ touch index.html$ echo &quot;Hello World&quot;&amp;gt;index.html$       Use $ git add . to add index.html to Git’s history.        Use $ git commit to commit changes.        Use $ git push to push the gh-pages branch to GitHub.  $ git add .$ git commit -am &#39;initial commit&#39;[gh-pages (root-commit) 0d4a0ae] initial commit 1 file changed, 1 insertion(+) create mode 100644 index.html$ git push -u origin gh-pagesCounting objects: 3, done.Writing objects: 100% (3/3), 236 bytes | 0 bytes/s, done.Total 3 (delta 0), reused 0 (delta 0)To git@github.com:RayHightower/random-repo.git * [new branch]      gh-pages -&amp;gt; gh-pagesBranch gh-pages set up to track remote branch gh-pages from origin.$   Open a web browser and navigate to http://your-github-user-name.github.io/random-repo. For the example in this article, use http://rayhightower.github.io/random-repo. You should see the words “Hello World” in the browser window.                Congrats on your success!GitHubber Alyson La demonstrates these steps in a 4-minute video, with some creative variations.Hello World = Done. Enter Jekyll.Now that Hello World! runs well, consider Jekyll. Jekyll will generate your static pages based on the rules you setup in the Jekyll templates.Branches: gh-pages for Projects, master for OrganizationsMost sites hosted through GitHub Pages will use the gh-pages branch. These are called Project Pages. For example, http://rayhightower.com/random-repo is a Project Page. Its files are in the gh-pages branch of https://github.com/RayHightower/random-repo.Each GitHub account can have one repo called [account_name].github.io that uses the master branch. GitHub refers to these as Organization Pages. For example, http://rayhightower.github.io, also reachable via http://rayhightower.com, is an example of an Organization Page. Files for RayHightower.com are in the master branch of https://github.com/RayHightower/rayhightower.github.io/.I do not know why GitHub Pages are configured this way. One guess: It makes it easier to keep your marketing site and application site in one repo, and they’ll never clobber each other if they’re in separate branches. If you know the official reason for the Organization vs Project page setup, feel free to share your insights in the comments below.ConclusionEnjoy GitHub Pages!",
      "url": " /blog/2015/07/22/github-pages-quick-start-guide/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-07-20-the-lambdajam-2015-experience": {
      "title": "The Lambda Jam 2015 Experience",
      "content"	 : "Working in software development is like being the proverbial kid in candy store. Every new language is a shiny and delicious thing. Lambda Jam (which bounces between Chicago and Melbourne) is a traveling candy store. And, like the kid in the candy store, I am sometimes distracted by tangential temptation.Most of my time is spent running WisdomGroup, where we focus on Ruby and Swift. We’re object-oriented all the way. Given that, why would I want to attend a functional programming conference like Lambda Jam? For the brain-stretching experience. If your background is anything like mine, you might enjoy it, too. Here’s why.Motivation: Parallelism and ConcurrencyOne immediate reason to explore FP: The impending end of Moore’s Law.  For over half a century we’ve taken it for granted that we could double the number of transistors on a wafer every 18 months or so. But the laws of physics are catching up to us, and now we need to create new ways to boost computer performance. Two potential performance boosters: Parallelism and concurrency.And yes, as Rob Pike points out, Concurrency is Not Parallelism. Concurrency enables parallelism.Certain features of FP reduce the pain of writing concurrent programs.  For example, data immutability will not allow two (or more) instances of the same process to over-write the same data. Developers trained to write serially-executing programs never have this concern. But if we want the benefits of concurrency, we need to acknowledge and attack a new set of challenges.Side note: Parallella offers one way to explore parallelism and concurrency in hardware. What a board!FP, Physics, and CalculusConal Elliott kicked off Lambda Jam by making connections between FP, physics, and calculus. He shared why concurrent models are difficult to reason about. And then he shared methods of abstraction that we can use to overcome the difficulty.One abstraction tool, mentioned by Elliott and shared by some of the other presenters: Types. Ruby is a dynamically typed language, employing “duck typing” as needed. The flexibility that comes from duck typing sometimes leads to unintended consequences. A strongly typed language, like Haskell or Clojure, can make certain programming errors obvious before we put our code into production.Haskell TutorialRanjit Jhala’s Haskell tutorial offered a chance to put some FP ideas into practice. The idea of attending a Haskell tutorial was intimidating. But I went anyway, and I’m glad that I did. Jhala made the material accessible. I left the Haskell tutorial with some hands-on experience and a new appreciation for FP (in general) and Haskell in particular.Hallway ConversationsSerendipity is a huge benefit of any conference. I ran into a DevMynd developer, Peter Harkins, who uses FP principles to make his Ruby code more robust. To learn more about this approach, check out Jessica Kerr’s FP presentation at WindyCityRails 2013.The Venue: South ShoreAny recap of Lambda Jam 2015 would be incomplete without a description of the venue, South Shore Cultural Center (SSCC). Some of you will remember SSCC as the venue for WindyCityRails 2012 and 2013. It’s in the middle of a golf course, next to Lake Michigan. The retreat-type atmosphere is great for brain work. Hats off to the Lambda Jam organizers for the choice. I look forward to a return visit.ConclusionMuch of the FP material at Lambda Jam was over my head. And yet a great deal was accessible to me. As developers, we must always stretch ourselves to learn more; that’s how we grow. Lambda Jam is great for stretching, and great for growth.",
      "url": " /blog/2015/07/20/the-lambdajam-2015-experience/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-06-30-parallella-examples": {
      "title": "Parallella Examples",
      "content"	 : "  Performance is of paramount importance in parallel programming. The reason we are in the game of writing parallel programs is either to solve a problem faster than on a serial computer, or to solve a larger problem than could previously be done. ~D. Thiébaut, author Parallel Programming in C for the TransputerSome developers buy a Parallella board because they already know parallel programming. They knew what to do with the device the moment they laid eyes on it. Others (like me) are relatively new to parallel programming. We see Parallella as an inexpensive tool for hands-on learning.Starting QuestionsA first-time Parallella user might ask questions like:      How do you get Parallella up and running? Covered in the Parallella Quick Start Guide. Gotchas are included to save us time.        What’s next? What can I do with Parallella that I can’t do with a single-core system?  To help answer the second set of questions, Adapteva gathered some examples that you can run on your own Parallella.Community Examples on GitHubThe parallella-examples repo on GitHub is a great place to start. As of this writing, the examples include matrix multiplication, ray tracing, and Mandelbrot sets. Given the active nature of open source, more examples may appear by the time you read this. Future examples might be created by you!Switching to TTY on ParallellaSome of the examples will not run on the Parallella’s Linux X Window desktop. Instead, TTY (teletype) mode is required. I will update this article when I find out why we need TTY. In the meantime, here’s how to switch to TTY mode and back on Parallella:      Switch to TTY by pressing Ctrl + Alt + F2.        The first time you switch to TTY, you will need to log in. Use the default Parallella credentials: login = linaro, password = linaro.        Switch back to X Window by pressing Ctrl + Alt + F7.  Interesting observation: On my Parallella, pressing Ctrl + Alt + F[any number except 7] shifts the device to TTY mode. Only Ctrl + Alt + F7 switches it back to X Window.Running the Mandelbrot ExampleTo run the Mandelbrot example, switch to TTY mode and then…$ cd parallella-examples/mandelbrot$ make     # You&#39;ll only need to run make once.$ ./run.shYou’ll see an animated graphic showing the Mandelbrot calculations in real time.So, what’s a Mandelbrot set and why do we care?About Mandelbrot Sets                   Clouds are not spheres, mountains are not cones, coastlines are not circles, and bark is not smooth, nor does lightning travel in a straight line. ~Benoit MandelbrotA Mandelbrot set is a group of numbers that displays a certain unusual property. Each member of the set is based on a calculation performed on the previous member, and an infinite number of members can be plotted within a finite area of a plane. Since humans are visual, we can easily recognize a Mandelbrot set that has been plotted on a graph, like the Mandelbrot diagram in this article.For a 15-minute explanation of the Mandelbrot set, check out The Amazing Mandelbrot Set Tutorial. The video covers imaginary numbers, complex numbers, and iterative functions with just enough depth to explain how the Mandelbrot set gets generated.A Mandelbrot algorithm designed for and executed on a parallel system will run faster than a similar algorithm running in serial. The algorithm and the code must be tailored for a parallel system in order for the advantage to be realized.Other Parallella ExamplesAs of this writing, the other graphical programs in the parallella-examples repo can be run in a similar fashion. cd into the directory, run make, and then ./run.sh.Next stepsParallella is a learning tool. A learning lab. When we are learning, we ask questions like:      How can we measure the difference in performance between serial and parallel versions of different algorithms?        Why do the graphics-oriented examples require TTY mode?        Scrot works on several single-board computers, including Parallella and Raspberry Pi. Why won’t Scrot work in TTY mode on Parallella?        Once we get the graphics examples (like Mandelbrot and ray tracing) working in X Window, what’s the best way to record the on-screen animation? Holding a camera in front of the monitor will work, but it seems archaic.  And, the biggest questions of all:      What can we do with Parallella that we cannot do with a single-core computer?        How can we demonstrate the difference visually?  ",
      "url": " /blog/2015/06/30/parallella-examples/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-06-25-3d-printing-at-blue1647": {
      "title": "3D Printing at BLUE1647",
      "content"	 : "                Every visit to BLUE1647 is full of pleasant surprises. There’s new equipment, a new opportunity to learn new technology, new people to learn from, or all of the above.I recently bought a second Parallella for a WisdomGroup project. Since it’s important to protect the device with a case, this seemed like a good time to try one of the 3D printers at BLUE1647. The result is in the photo, above.Why 3D Printing MattersThe current state of 3D printing feels like laser printing in the 1980s. Back then, laser printers were big and expensive. Sharing the printer among many users made the cost easier to justify. 3D printers are in a similar position in the year 2015. And, as with most new technology, prices are on a downward slope.The 3D printers at BLUE1647 are available to any member. Talk to Rashad Glover or Patrick Harris to get started.What to Know about 3D PrintingPrinting any object in three dimensions takes a long time. The case in the photo took over four hours to print. The MakerBot Thingiverse has a wide variety of STL files to choose from. This particular STL file was created by Ben Reed, a maker in Calgary, Alberta, Canada.                STL File InternalsInstructions for 3D printing an object are stored in a STereoLithography (STL) file. Open an STL file in your favorite text editor and you’ll see something like this:solid OpenSCAD_Model  facet normal -0.998027 0 -0.0627913    outer loop      vertex 0 66.2 1.95      vertex 0 124 1.95      vertex 0.020502 66.2 1.62413    endloop  endfacet  facet normal -0.998027 0 -0.0627913    outer loop      vertex 0.020502 66.2 1.62413      vertex 0 124 1.95      vertex 0.020502 124 1.62413    endloop  endfacet  ...Skip about 58,000 lines...  facet normal 0.803458 -0.261061 -0.535072    outer loop      vertex 91.7184 1.76127 0.69744      vertex 91.5557 1.82567 0.421758      vertex 91.6374 2.0769 0.421758    endloop  endfacet  facet normal 0.803459 -0.261059 -0.535071    outer loop      vertex 91.7184 1.76127 0.69744      vertex 91.6374 2.0769 0.421758      vertex 91.8068 2.03339 0.69744    endloop  endfacetendsolid OpenSCAD_Model  The objects described in an STL file can be viewed through a free online tool like ViewSTL.com.Next Steps3D printing is still in its infancy. Next time you visit BLUE1647, maybe for a ChicagoRuby meeting, check it out.",
      "url": " /blog/2015/06/25/3d-printing-at-blue1647/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-06-24-getting-started-with-jekyll": {
      "title": "Getting Started With Jekyll",
      "content"	 : "                Jekyll is a static HTML generator for web sites that don’t require a content management system (CMS). Jekyll sites load quickly, especially when combined with GitHub Pages. Bobby Reyes and I will present Jekyll at ChicagoRuby: 1871 on Thursday, June 25, 2015. Slides are below.Why Jekyll?You may already know that RayHightower.com is powered by [Octopress](http://octopress.org) (as of the date of this article).Update: Migration complete! Octopress sits on top of Jekyll. Recently, I discovered that Jekyll offers some advantages that will help this blog greatly, namely:      A larger community than Octopress. As Linus Torvalds says: With many eyeballs, all bugs are shallow.        Lots of templates. I am not a designer. Further, since this is a simple blog, an amazing design would be overkill. But the blog must look crisp and professional, right? Jekyll templates that meet my needs are widely available.  Migration Happening NowThis blog&#39;s migration from Octopress to Jekyll is underway. I’ll post when it’s done.Update: The migration from Octopress to Jekyll is complete, and you’re reading it now! In the meantime, take a look at the slides from the Jekyll presentation at ChicagoRuby. This 82-second video shows how to launch a Jekyll site with the default template. &amp;lt;/div&amp;gt;&amp;nbsp;### Thanks, Octopress!I am grateful to the Octopress community for introducing me to static page generators. Jekyll is the next logical step for me. And, since technology is always changing, it will be exciting to learn what&#39;s next.",
      "url": " /blog/2015/06/24/getting-started-with-jekyll/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-06-02-unleash-your-awesomeness-at-windycityrails": {
      "title": "Unleash Your Awesomeness at WindyCityRails",
      "content"	 : "Are you driven to excel? Do you see yourself here?      You have already built a successful Rails app. Now that you’re “done”, you know you can make it better, but you’re not sure how. You want to take your skills to the next level.        You recently graduated from Dev Bootcamp, Starter League, Mobile Makers or another school. You’re ready to meet and interact with your next generation of mentors.        You are no longer a beginner. You have seen advanced developers in action, and you are determined to get there yourself.    You are a beginner who learns quickly. Maybe you’re a seasoned professional with a track record in another field. You want to meet people (perhaps mentors?) who can help you accelerate through the beginner phase so you can launch something useful on the web.Common thread: It’s time to unleash the awesomeness in your bones. You want to take your skills to the next level, and you are ready to tackle Big League Problems. WindyCityRails is for you.What is a Big League Problem?Growth-oriented people view big league problems as good problems. For example, the Rails app you built is pulling in customers, and you’re bumping into the limits of your software architecture. Who knew that so many people would buy from you!Now… How do you scale? Do you buy more hardware, change your architecture, choose a new platform, or some combination of these? The presenters at this year’s WindyCityRails have dealt with scaling problems. Scaling an app, scaling a team, scaling a management structure… If you expect to encounter challenges, it makes sense to learn from the mistakes (and triumphs) of others. Put their experience to work for you.Awesome Speakers. Awesome Audience.Check out the complete list of WindyCityRails speakers and ask yourself what you can learn from each one.Remember that only 300 WindyCityRails tickets will be sold. Our speakers enjoy interacting with audience members throughout the conference. As professionals, they are always learning, too! So if you want some face time with people who understand Big League Problems (and more importantly, Big League Solutions) WindyCityRails is the place for you to be.Get Tickets NowTickets for WindyCityRails always sell fast. Get yours now. We look forward to seeing you at WindyCityRails!",
      "url": " /blog/2015/06/02/unleash-your-awesomeness-at-windycityrails/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-05-29-trinity-high-school-thank-you": {
      "title": "Trinity High School: Thank You!",
      "content"	 : "   What is the toughest obstacle you have ever faced in business, and how did you deal with it? ~Student at Trinity High School River Forest, IL, USA Trinity High School invited me to speak to two of their student groups this morning. The first, Information Technology in the Greater Society (ITGS), is a project-based class where students explore multiple facets of the information technology industry: Web development, digital editing, open source, and related areas. The second group, Students Working to Advance Trinity’s Technology (SWAT), lives up to its name by ensuring that students and faculty make full use of the technology deployed by the school.The students I met at Trinity High School are intelligent and ambitious. The “toughest obstacle” question prompted a great deal of thought. My toughest challenge is realizing that WisdomGroup has too many projects for me to know every detail. Therefore, I need to let go and let members of the team handle their areas as expertly as they always do. (The answer sounds good, but this is indeed a struggle, possibly worthy of a blog article.)Getting Started in Software DevelopmentFor those students who attended this morning’s presentations, here are the links that I promised you:  GitHub Student Developer Pack.  Professional developer tools, offered for free to students.  Internet attacks. An animated map showing cyber attacks in real time.  w3schools.com. One place to start learning web development.And here are the slides from the presentation.About the ExperienceStudents at Trinity are attentive and engaged. Their questions enable the learning experience to flow both ways, and the presenter learns as much as the audience. Thank you Trinity High School for a great experience!",
      "url": " /blog/2015/05/29/trinity-high-school-thank-you/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-05-27-massively-parallel-parallella": {
      "title": "Massively Parallel Parallella",
      "content"	 : "                Supercomputer.io is the first technical conference for Parallella, to be held May 30, 2015 in Tokyo, Japan.You can participate even if you’re not in Tokyo. Parallella owners around the world will connect their boards via the Internet to create the most efficient supercomputer on the planet. Resin.io has built a special micro-SD-card image (using Docker) so adding your Parallella to the mix is relatively quick.This article includes detailed steps plus a few gotchas.First: Why?Some problems are too thorny for a typical computer to solve in a reasonable amount of time. Supercomputers might solve these problems quicker, but they cost millions of dollars. Solution: Link a bunch of $100, 18-core Parallella computers together via the Internet to amplify our compute power while saving money. This shared computing technique has worked in the past:      Through Stanford Folding@home, computer owners around the world are using excess CPU cycles to search for cures for diseases like Alzheimer’s, Huntington’s, and Parkinson’s.        The SETI@home project uses computers around the world to download and analyze radio telescope data to help with the search for extraterrestrial intelligence.  The benefits are clear. Let’s get started.Materials Required                Here’s what you need to participate:  Parallella board. You can buy one for about $100 at these retailers.  Ethernet connection to the Internet.  4 GB (or larger) micro-SD card.This procedure is has been tested on Mac OS X Yosemite (10.10.3). Linux instructions are probably similar.Gotcha: Headless ParallellaSomething that tripped me up until I learned more: A Parallella configured for Supercomputer.io will run headless. There will be no HDMI output. When my HDMI monitor showed No Signal, I thought that I had broken something. No worries. This is just a headless system.I don’t know if that will change.Download the ImageDownload the Resin.io image from the Supercomputer.io site. Resin.io has created a special SD-card image (using Docker) for this project. As you can see below, I stored mine in a directory called ~/Downloads/Parallella$.~/Downloads/Parallella$ ls -altotal 2678784drwxr-xr-x   3 rth  staff         102 May 26 10:53 .drwx---r-x+ 86 rth  staff        2924 May 26 11:00 ..-rw-r-----@  1 rth  staff  1371537408 May 26 10:56 resin-supercomputer-0.1.0-0.0.14-Z7010-16.img~/Downloads/Parallella$ Prep for Burning the SD Card                Burning the SD card took about sixteen minutes (once I got the procedure right, as described below). Suggestion: Start the burn process, make sure it’s progressing, and then go work on something else. A watched pot never boils.Insert your SD card into your Mac’s SD card reader, and use the Mac OS X diskutil list command to determine the designation of the SD card. If you use portable hard drives with your primary machine, the SD card designation could change from time to time, so it’s important to perform this step each time you burn an SD card.~/Downloads/Parallella$ diskutil list/dev/disk0   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      GUID_partition_scheme                        *960.2 GB   disk0   1:                        EFI EFI                     209.7 MB   disk0s1   2:                  Apple_HFS MacSSD                  959.3 GB   disk0s2   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3/dev/disk2   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:     FDisk_partition_scheme                        *8.0 GB     disk2   1:               Windows_NTFS Parallella              8.0 GB     disk2s1~/Downloads/Parallella$ From this diskutil report, we can see that we want to burn the SD image to /dev/disk2. The other device is the hard drive for my primary machine. Burning the wrong device will destroy data.Burning the Card, Skipping the GotchaTo burn the SD card…  Change into the directory where you downloaded the resin.io image.  Unmount the destination partition on the SD card.  Use the the dd command to copy the resin.io image to the SD card.Gotcha alert: The first time I attempted to burn the image, I used a block size of 64k (bs=64k) for the dd operation. Big mistake on my part because the write operation took almost four hours. On my second attempt, I used a 1 megabyte block size (bs=1m) and the write operation finished in a speedy 16 minutes. So, learn from my pain and use bs=1m.Burn your micro-SD card like so:$ cd [directory containing the resin.io image file]$ diskutil unmountDisk /dev/disk2$ sudo dd if=resin-supercomputer-0.1.0-0.0.14-Z7010-16.img of=/dev/disk2 bs=1mPassword:1308+0 records in1308+0 records out1371537408 bytes transferred in 960.001945 secs (1428682 bytes/sec)$                 If you want to make sure that dd is running properly, use OS X’s Activity Monitor utility to monitor burn progress (see the ‘burn progress’ diagram). Here’s a quick run-through of the dd command options:  sudo gives you super powers.  dd is the “copy and convert” command. The letters “dd” have nothing to do with what the tool actually does. It’s just a command name. And like so many things in computer science, the name might be based on a pun.  if= specifies the input file. You can include the full path, or if the file is in your current directory, you can omit the path as shown in this example.  of= specifies the output file. We know that the SD card is located at /dev/disk so that’s where the results of this command are headed.  Note that your destination directory may differ from this one.  bs=1m specifies the block size used for the destination file. 1 megabyte worked well on my machine.About the New Resin.io Image                The new image will be called boot-parall as shown in the diagram.  Depending on your particular image, your list of files may be the same as mine.Boot Parallella with the Resin.io ImageOnce the micro-SD card has been burned, eject it from the Mac and insert it into the Parallella. Then apply power to the Parallella.Working HeadlessAs mentioned above, a Parallella configured this way will run headless, without HDMI output. So, how do you know if the Resin.io image is working?First, get a network scanner and use it to locate your Parallella on your local area network. I use an iPad app called Fing, but any good network scanner will do. Your Parallella will appear as parallella-hdmi-resin, along with its corresponding IP and MAC addresses.Ping the IP address given by your network scanning tool like so:~$ ping 192.168.11.132PING 192.168.11.132 (192.168.11.132): 56 data bytes64 bytes from 192.168.11.132: icmp_seq=0 ttl=64 time=4.767 ms64 bytes from 192.168.11.132: icmp_seq=1 ttl=64 time=3.694 ms64 bytes from 192.168.11.132: icmp_seq=2 ttl=64 time=4.057 ms64 bytes from 192.168.11.132: icmp_seq=3 ttl=64 time=3.969 ms^C--- 192.168.11.132 ping statistics ---4 packets transmitted, 4 packets received, 0.0% packet lossround-trip min/avg/max/stddev = 3.694/4.122/4.767/0.396 ms~$ If your Parallella is up, running, and attached to your network, youroutput will look similar to what you see above. But if ping can’t findyour Parallella, you’ll get…~$ ping 192.168.11.199PING 192.168.11.199 (192.168.11.199): 56 data bytesRequest timeout for icmp_seq 0Request timeout for icmp_seq 1Request timeout for icmp_seq 2^C--- 192.168.11.199 ping statistics ---4 packets transmitted, 0 packets received, 100.0% packet loss~$ Connect to Supercomputer.ioAfter you have successfully connected your Parallella to your LAN and the Internet, visit http://supercomputer.io/#/devices/ from a computer other than your Parallella (because the Parallella is headless). This page will tell you when your Parallella has connected to the Supercomputer.io mothership.To do this, you will need the media access control (MAC) address (also known as the hardware address) for your Parallella’s network interface. I used my network scanning tool, Fing, to find the MAC address for the Parallella. You should be able to do the same with your network scanning tool.Enter your Parallella’s MAC address in the field on the form, and click search to determine whether your device has connected.                Your first connection attempt might not be successful. It takes awhile for the first connection to happen because the Parallella might need to download software updates first.It took about 30 minutes for Supercomputer.io to recognize my Parallella. The successful connection was cause for celebration:                What’s Next?I’m not sure what’s next for Supercomputer.io and Parallella. I would imagine that Status = idle will be replaced by something more interesting, and images processed will eventually be greater than zero.Engineers at Parallella and Resin.io have done a great job so far. Now, since it’s likely that they enjoy ideas from the peanut gallery, here are a few suggestions for them:      Consider a version of the Resin.io image with HDMI support. Like many in the Parallella community, I’m willing to share CPU cycles for the greater good. And I want to see what’s running on my Parallella, too.        Add more metrics to the Supercomputer.io site. It’s nice to see the number of cores that have connected to Supercomputer.io. How about a map showing where the different Parallella devices are located? How about a dashboard that shows the number of cores currently in use?  Hats off to the Parallella and Resin.io teams. Looking forward to more!",
      "url": " /blog/2015/05/27/massively-parallel-parallella/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-05-26-be-courageous-about-your-ideas": {
      "title": "Be Courageous About Your Ideas",
      "content"	 : "  Things that get you fired when you’re young are the same things you win awards for when you’re old. You have to be courageous about your ideas. When you come up with something good, that means it’s different from what they expect so they’re likely to fire you. Years later (if you survive) they’ll bring it out as one of the great things that you did. ~Francis Ford Coppola, Director The GodfatherQuote ContextFrancis Ford Coppola was reflecting on his experience as director of The Godfather when he spoke these words. When Coppola was selected to direct the picture, he was young and untested. He wanted to use the young, unknown Al Pacino for one of the major roles, Michael Corleone. The suits at Paramount wanted Coppola to fire Pacino. Coppola defied the suits and stuck with his first choice.And today, film historians regard Coppola’s decision as a genius move.Question for TodayWhere do we need to express courage right now?",
      "url": " /blog/2015/05/26/be-courageous-about-your-ideas/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-05-22-building-a-great-company": {
      "title": "Building a Great Company",
      "content"	 : "                Good is the enemy of great. If a company faces dire circumstances, managers must change because the alternative is death. But if circumstances are good (or even okay) managers can coast along indefinitely. A good company can be lulled into a state of complacency instead of achieving greatness.So how does a good company become great?Greatness Defined                A team led by author Jim Collins spent five years examining publicly traded companies to determine why some companies make the leap to greatness while others remain simply good. Collins and his team published their findings in the book Good to Great.The study only focused on publicly traded companies since their financial data is readily available. The team defined great companies as those that beat the general stock market by an average of seven times (7x) over fifteen years. This is better than double the results delivered by some of the world’s greatest companies, including Intel, Coca-Cola, and General Electric.Special attention was paid to companies that delivered average or poor results for fifteen years, followed by a sudden shift to great results. The team’s driving question: What are the universal distinguishing characteristics that cause a company to go from good to great? Or, in the diagram at the top of this article: What’s inside the black box?What Great Companies DoCollins and his team observed that great companies are great because of the way they think and act. This article will discuss two findings from the study:  The Hedgehog Concept  The Stockdale ParadoxThe Fox and the HedgehogThe hedgehog concept comes from an ancient fable about a fox and a hedgehog. The fox is hungry for a hedgehog dinner. Cunning and skillful, the fox has several clever attack plans to choose from.The hedgehog is less clever. It has one (and only one) very effective plan: To roll itself into a ball, exposing its needles and forcing the fox to find food somewhere else.The fox has many plans. The hedgehog has one plan. In the fable, simplicity triumphs over cleverness. The hedgehog wins.Hedgehogs and Business                The Good to Great team discovered that great companies are like the hedgehog. Great companies focus on the one thing that they are good at. Further, great companies only fix their focus after an honest and serious examination of their strengths &amp;amp; weaknesses. The best focal point lies at the intersection of three interlocking rings:  Deep Passion. What does the company feel deeply passionate about? What gives them that “I can’t believe I get paid to do this” feeling?  Sound Economics. What will customers pay the company to do or provide? What drives the economic engine?  Best in the World. What can the company do better than any other company in the world?Deep PassionGillette was cited as a great company where employees were excited about the advanced technology in their razors. They decided on advanced-technology razors largely because they couldn’t get excited about competing in the price-sensitive disposable market.Employees of the Federal National Mortgage Association (Fannie Mae) could never get excited about crunching numbers, but the idea of helping people buy homes proved exciting. Fannie Mae employees are on a heroic quest to democratize home ownership.The Good to Great team observed that passion cannot be forced, it can only be discovered. Forcing your company to be passionate about an idea is like forcing yourself to like a particular flavor of ice cream. You either like it or you don’t.Sound EconomicsWhat will customers pay for? And what is the best way to measure progress toward greatness? The great companies found one metric (like profit per store or profit per employee) that every person in the company could focus on during the march to greatness.One great company, Walgreens, chose profit per customer visit as the best economic measuring stick for their business. The decision was driven by their discovery that customers will pay for convenience, and the most convenient store locations are also the most expensive to lease &amp;amp; maintain. The only way to justify expensive locations: Make every customer visit as profitable as possible.Best in the WorldInvestor Warren Buffett says this about Wells Fargo: “They stick with what they understand and let their abilities, not their egos, determine what they attempt.” At one point the bank decided to shut down its international operations and focus on the Western United States. Other banks, notably Bank of America, pursued every possible opportunity regardless of its fit with their skill set. The result: Wells Fargo outperformed and outgrew the much larger competitor. Wells Fargo played hedgehog to the BofA fox.The Stockdale ParadoxAdmiral Jim Stockdale was the highest ranking U.S. military officer captured during the Vietnam War. During eight years of imprisonment, he and his fellow soldiers were tortured repeatedly and forced to participate in propaganda films as “well treated” prisoners. The prisoners had no idea whether they would survive to see their families again. Stockdale survived, and after his release, the Admiral and his wife co-authored an account of his ordeal in the book In Love and War.                Optimism and DiscouragementImprisonment is far more serious than anything most business execs will ever face. Still, the Good to Great team and Admiral Stockdale were able to draw parallels between growing a company and surviving life as a POW. For example, the Admiral observed that optimists had the hardest time in prison. Optimistic prisoners always believed “we’ll be released next Christmas” only to be let down year after year. Many optimists eventually died heartbroken in prison.Stockdale’s policy was to be brutally honest about the situation he was facing and to deal with it directly day to day. At the same time, he maintained faith that he would prevail in the end. During the pain of the ordeal, he decided to turn the experience into the defining event of his life. Thus the paradox: He brutally confronted his reality, yet he maintained faith that he would prevail in the end.Great Companies Respond Differently to AdversityCollins and his team observed that companies, being made up of people, behave like people. What separates the good from the great is not whether they have difficulties, but how they deal with those difficulties. Every company faces obstacles of one type or another. But the great companies face those obstacles directly, recognizing them for what they are, while at the same time maintaining faith that they will prevail.Stockdale Paradox ExampleThe banking industry became commoditized during the 1980s period of deregulation. Some banks left the industry (voluntarily or otherwise). Wells Fargo, however, thrived and grew during the upheaval. They confronted the brutal reality of deregulation and commoditization by focusing on one region of the United States and moving more of their operations to small branches and ATMs. Result: Higher profit per employee. Other banks, that did not confront changing reality, were either dissolved or acquired.Does Technology Matter?What about technology? Great companies are not necessarily those that spent the most on technology. This makes sense when you consider that technology is only a tool; only a bus that a company chooses to ride. If the bus is headed in the wrong direction, a faster bus will only make things worse. But if the bus is headed in the right direction, then a faster bus might accelerate the move to greatness.Note: A version of this article was originally posted at WisdomGroup.com.",
      "url": " /blog/2015/05/22/building-a-great-company/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-05-20-muhammad-ali-and-the-hightower-brothers": {
      "title": "Muhammad Ali and the Hightower Brothers",
      "content"	 : "                These photos were taken in 1972 or ‘73 with an old Polaroid camera. During a family road trip, my parents arranged a visit to Muhammad Ali’s training camp in Deer Lake, Pennsylvania. Dad was a big boxing fan. Mom… tolerated the three males in our household.How fast was Ali in his prime? Very fast. The photo on the left shows Ali evading a punch from my brother, Edward, who was about seven at the time. I distracted the Champ with a handshake. Hightowers always work together.Our family didn’t receive any special treatment from the Champ. As I recall (through the eyes of my eight-year-old self) Ali interacted with everyone in the training camp that day. And I hear that he enjoys people just as much today.There are many reasons to admire Ali. Among them are his discipline, courage, and effective marketing.Discipline  The fight is won or lost far away from witnesses, long before I dance under those lights.~Muhammad AliA professional athlete cannot fake preparation. Sometimes the training feels endless. Road work, weights, sparring, and drills are designed to condition the mind and body for combat. Fakers are eliminated early; they never make it to the national stage. Champions have the discipline to train even when they don’t feel like it.Every profession has the equivalent of athletic training. For example, software developers are constantly reading blogs, experimenting with algorithms, and practicing kata. The best entrepreneurs are those who observe human behavior, and they build products and a team to meet customer needs. Sometimes the work feels endless. But champions do it anyway.Champions, in athletics and in business, have the discipline to do what needs to be done even when they don’t feel like doing it.Courage  I ain’t got no quarrel with those Vietcong.~Muhammad AliAli was stripped of his boxing title when he refused to fight in the Vietnam war. He was a conscientious objector. He was arrested and found guilty of draft evasion. Four years after the title was taken, the Supreme Court of the United States overturned the conviction. Ali stuck with his values in spite of the professional cost. His view of the war in Vietnam was ahead of its time.As professionals, how often are we asked to take a stand in the face of personal cost?Ali currently suffers from Parkinson’s disease. It would have been easy for him to lock himself in a room full of money and never interact with people again. However, he chose a different path. Through the Muhammad Ali Parkinson Center he fights for a cure for himself and others. Ali continues to fight.Effective MarketingAli talked trash before and after every fight, taunting his opponents with ridicule and poetry.  Float like a butterfly, sting like a bee.The hands can’t hit what the eyes can’t see.~Muhammad Ali                Ali’s boasting was all about marketing. My father used to say “people like to see a braggart get whupped.” The more Ali boasted, the more tickets the fight promoters could sell and the more Ali could justify big fees for boxing. Privately, Ali shared that he would never let his boasting interfere with his training.In 2011, Ali and my brother met again at the Muhammad Ali Center in Louisville, KY. Edward keeps copies of the 1972 photos on his phone; the Champ enjoyed seeing himself from long ago. Check out Ali’s t-shirt and the photos on the conference room walls. Ali is always marketing and he loves to interact with people. What a remarkable role model.",
      "url": " /blog/2015/05/20/muhammad-ali-and-the-hightower-brothers/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-05-08-solar-and-tesla": {
      "title": "Solar and Tesla",
      "content"	 : "  We have this handy fusion reactor in the sky called the sun. We don’t have to do anything. It just works. ~Elon MuskElon Musk shared some interesting thoughts during the April 30th announcement for Tesla Energy. Two charts stood out in particular.Solar Panels RequiredTake a look at the map of the United States, above. A blue square has been drawn in the northwest corner of Texas. At map scale, solar panels with combined surface area equal to the blue square could meet all of the electricity needs of the USA. And we’re the most power hungry country on the planet!Batteries RequiredSolar panels are useless at night and on cloudy days. Fortunately, we can store excess energy on sunny days if we have the right kind of batteries. Tesla happens to make those batteries, hence the Tesla Energy announcement.The second map is drawn at a larger scale than the first one. For reference, the blue square covers the same surface area as before. At map scale, all of the batteries required to store reserve solar energy would fit inside the red dot.What are we waiting for?",
      "url": " /blog/2015/05/08/solar-and-tesla/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-05-06-berkshire-hathaway-50th": {
      "title": "Berkshire Hathaway&apos;s 50th",
      "content"	 : "  Hi, I’m Warren. He’s Charlie. He can hear, I can see. We work well together. ~Warren Buffett,at the start of the 2015Berkshire Hathaway annual meetingBerkshire Hathaway held its 50th annual shareholder meeting on May 2, 2015. The company is a lesson in successful capitalism. Chairman Warren Buffett and vice chairman Charlie Munger have built the most successful investment partnership in human history. The list of wholly-owned Berkshire subsidiaries includes GEICO, Fruit of the Loom, Brooks Shoes, and See’s Candies. The company also owns large percentages of Coca Cola (9.16%), American Express (14.9%), IBM (7.82%), and Wells Fargo (9.01%).Over 40,000 shareholders attended Saturday’s annual meeting. What draws so many shareholders to Omaha every year? The opportunity to learn.The Meeting, In a NutshellThe formal shareholders meeting only lasts fifteen minutes, from 3:30pm to 3:45pm. For the rest of the day (excluding an hour for lunch) Buffett (age 84) and Munger (age 91) answer questions from journalists, financial analysts, and randomly selected members of the audience.The day starts at 8:30am with a movie.Morning MovieEach Berkshire meeting starts with a short movie. One year, the movie included information about a recent acquisition, a deal that had been completed just hours before the meeting. This year’s movie was a humorous montage of skits worthy of Saturday Night Live, woven with ads for Berkshire products. Berkshire brought in Hollywood director John Landis to direct this year’s opening movie. One skit included a boxing match between Buffett and Floyd Mayweather. Charlie Rose interviewed the pugilists before their bout. Mayweather and Rose played themselves in the skit.Questions and AnswersBuffest and Munger answer questions from the stage while sipping Coke and munching See’s candy. Their answers tend to be short and direct, laced with wit. Snippets of wisdom from the Q &amp;amp; A session:      Buffett: Investing is easy if you can control your emotions.        Munger: I quit practicing law. Law firms are like a pie eating contest where if you win, you get to eat a lot more pie.        Buffett: When it comes to investing, I prefer to be 100x too cautious, rather than 1x un-cautious.        Munger: Both of us hate the idea of losing someone else’s money. It drives our caution.        Munger: People want value when they buy something. But when they invest, they go for the quick fix. I don’t understand that.        Munger (When asked if he would have preferred to be born in 2015 instead of 1924): I don’t like these overly theoretical questions. I’d rather answer questions where I can actively help somebody.        Buffett (summarizing capitalism): Do what you’re best at. Let other people do what they’re best at.        Buffett (on his long term perspective): I get monthly reports from all our companies and I read them with great interest. We don’t ignore monthly or yearly results. We just don’t live by them.        Munger (When asked about Berkshire’s interest in investing in Germany): Germans work fewer hours and produce a lot more. We’d like to invest in Germany, but it’s difficult to penetrate family company ownership structure.        Buffett (When asked about the NetJets pilots picketing outside the annual meeting): We have hundreds of labor unions in BRK. Three strikes in fifty years. Employees and employers sometimes disagree regarding pay. That’s human nature. We will resolve this disagreement.        Munger (Predicting why the Euro will eventually fail): You can’t form a business partnership with your thriftless, drunken brother in law.        Munger (On BRK borrowing money): We haven’t felt cash constrained in a long time. We would love to have an acquisition large enough to require us to borrow.        Buffett (On giving up his private jet vs quitting the Internet): If I had to give up my plane or the Internet, I’d give up the plane.        Munger (On why he and Buffett are so successful): We owe a considerable amount to the families we were raised in. We had great role models.  Giving Credit for SuccessThroughout the Q &amp;amp; A period, Buffett praised several of the Berkshire managers by name. When a questioner said something good about American Express, Buffett praised Ken Chenault. When someone had positive words about Berkshire’s insurance holdings, Buffett credited Ajit Jain. Buffett and Munger share the credit for Berkshire’s performance. That’s a big reason why the companies perform so well.Meeting PeopleWhen 40,000 investment-minded people gather, rich conversations will happen. After the meeting, I ended up having dinner with an asset manager from Brazil. Both of us arrived solo at Gorat’s, Buffett’s favorite steakhouse in Omaha. We decided to share a table when we realized that Gorat’s would seat a table for two faster than two tables for one. Capitalism, properly practiced, is about cooperation.5k RunAbout 1,000 people gathered for the 5k Invest in Yourself run on Sunday morning. The weather was perfect.                                Looking Forward to the Next OneThe Berkshire Hathaway annual meeting offers an inspiring, powerful learning experience each year. I look forward to the next one.",
      "url": " /blog/2015/05/06/berkshire-hathaway-50th/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-04-28-pgcli-command-line-interface-for-postgresql": {
      "title": "pgcli - Command Line Interface for PostgreSQL",
      "content"	 : "Debugging is a fact of life when building apps with Rails or any other set of tools. All troubleshooting is easier when we can see what’s going on inside.pgcli is a command line tool that lets devs examine PostgreSQL databases from the command line. pgcli offers more powerful features than psql (the default terminal front-end for PostgreSQL) such as:  Autocompletion. In fact, pgcli autocompletion is smart enough to only show table names after FROM in a SQL statement.  Syntax highlighting. Find gotchas quicker, just like you would in a text editor.Debugging is easier when you can look inside the black box.InstallationTo install pgcli on Mac OS X, use Homebrew:$ brew install pgcli==&amp;gt; Installing dependencies for pgcli: openssl, postgresql==&amp;gt; Installing pgcli dependency: openssl==&amp;gt; Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2a-1.yosemite.b######################################################################## 100.0%# Homebrew installs dependencies as required...==&amp;gt; Installing pgcli==&amp;gt; Downloading https://homebrew.bintray.com/bottles/pgcli-0.16.3.yosemite.bottl######################################################################## 100.0%==&amp;gt; Pouring pgcli-0.16.3.yosemite.bottle.tar.gz🍺  /usr/local/Cellar/pgcli/0.16.3: 423 files, 5.2M$ Verify installation as follows:$ which pgcli/usr/local/bin/pgcli$ pgcli --versionVersion: 0.16.3$ Using pgcliTo view a list of available pgcli commands:$ pgcli --helpUsage: pgcli [OPTIONS] [DATABASE] [USERNAME]Options:  -h, --host TEXT     Host address of the postgres database.  -p, --port INTEGER  Port number at which the postgres instance is listening.  -U, --user TEXT     User name to connect to the postgres database.  -W, --password      Force password prompt.  -w, --no-password   Never prompt for password.  -v, --version       Version of pgcli.  -d, --dbname TEXT   database name to connect to.  --help              Show this message and exit.$ To use pgcli:$ pgcliVersion: 0.16.3Chat: https://gitter.im/amjith/pgcliMail: https://groups.google.com/forum/#!forum/pgcliHome: http://pgcli.comrth&amp;gt; ll will list the databases available to this installation of PostgreSQL. Note that the pgcli command prompt shows the currently logged in username. To discover other commands, use ?.As you experiment with pgcli, notice the command completion and the syntax highlighting. Big time savers relative to psql.AcknowledgementsThanks Attila Domokos and Ken Walters for the tweets that led to this pgcli blog post.",
      "url": " /blog/2015/04/28/pgcli-command-line-interface-for-postgresql/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-04-10-chicagoruby-blue1647-1871": {
      "title": "ChicagoRuby Expands to BLUE1647 and 1871",
      "content"	 : "  When smart peoplechallenge each other to grow,great things happen. ~The ChicagoRuby MottoIf you’re a developer itchin’ to ramp up your Ruby skills, Chicago is a great place to be. The local Ruby user group, ChicagoRuby, continues to expand in time, space, expertise, and numbers. The group is over 3,200 strong, with six events each month plus the annual WindyCityRails conference.The newest locations on ChicagoRuby’s monthly list are BLUE1647 and 1871.ChicagoRuby: BLUE1647                BLUE 1647 is an amazing maker space on Chicago’s South Side, in the Pilsen neighborhood. The leadership of BLUE1647 invited ChicagoRuby to host our first meeting in the space on March 19, 2015. The presenter, John Contreras of Matchup, took us through the nuances of Rails background processing.Rebecca Miller-Webster of thoughtbot will present at our next BLUE1647 meeting on April 17, 2015.Check the ChicagoRuby calendar for details and to RSVP.ChicagoRuby: 1871                1871 was an early player in Chicago’s startup incubator industry. Community leaders at 1871 invited ChicagoRuby to lead some Ruby-oriented sessions at the incubator. Marty Lavin will lead our first 1871 event on April 30, 2015.Organizer TeamEleven (yes, eleven!) organizers work in concert to make ChicagoRuby run well. Current members of the organizer team are:  Ginny Hendry - Started and co-organizes the ChicagoRuby Hack Nights.  Justin Love - Started in Elmhurst, acts as our liaison with the JavaScript community.  Alonda McCree - Manages downtown video and logistics overall.  Marty Lavin - Runs Elmhurst and leads intro sessions at 1871.  Sarah Cnota - ThoughtWorker, manages the downtown meetups.  LaToya Allen - Co-organizes the ChicagoRuby Hack Nights.  Doug Harman - Co-organizes ChicagoRuby: North Shore.  Stu Gerstein - Co-organizes ChicagoRuby: North Shore.  Bobby Reyes - Driving force behind ChicagoRuby’s activities at BLUE1647 and 1871.  Dexter Teng - ThoughtWorker and newest member of the organizer team.  Ray Hightower - author of this article.ChicagoRuby excels because the work is shared amongst many people. Hats off to our Organizer Alumni too!Something For YouAs of this writing, ChicagoRuby manages six events per month. You are certain to find something that fits you.  ChicagoRuby: Elmhurst - The first ChicagoRuby location. Meeting space provided by one of our members, Lee DeForest of DeForest Group.  ChicagoRuby: Downtown - Currently at ThoughtWorks. Added when we merged with Chirb.  ChicagoRuby: Hack Night - Currently at Enova. Added when Ginny Hendry said “we should have hack nights”.  ChicagoRuby: North Shore - Added when Doug Harman and Stu Gerstein said “we should be on the North Shore”.  ChicagoRuby: BLUE1647 - Added when Bobby Reyes formed relationships at the BLUE1647 maker space.  ChicagoRuby: 1871 - Added when 1871 members asked ChicagoRuby to run some beginner-oriented sessions.Exact dates and locations are on the ChicagoRuby calendar. Come out and collaborate with your fellow learning enthusiasts. You’ll be glad that you did.",
      "url": " /blog/2015/04/10/chicagoruby-blue1647-1871/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-03-31-amazon-dash-and-instant-gratification": {
      "title": "Amazon Dash and Instant Gratification",
      "content"	 : "The Amazon Dash Button is for customers who crave instant gratification. We might think of Dash as a brilliant blend of the Staples Easy Button, WiFi, and Amazon’s existing database of credit card numbers.When a customer runs out of a consumable item, they press a button. The order is sent immediately via WiFi to Amazon, where the customer’s credit card number is on file. Delivery can happen within 24 hours, depending on the item. No more standing in line at the store. In fact, no more walking a few feet to a computer to type in an order. Instant gratification, satisfied.Innovation for YouKudos to Amazon for combining some existing pieces to create something new. Most inspiring for anyone who needs to innovate.",
      "url": " /blog/2015/03/31/amazon-dash-and-instant-gratification/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-03-20-blooms-taxonomy-for-learning": {
      "title": "Bloom&apos;s Taxonomy for Learning",
      "content"	 : "Bloom’s Taxonomy is a framework that breaks the learning process into stages. According to Bloom, learning begins with rote memorization and the process progresses upward until we can apply what we’ve learned in creative new ways.Youthful BiasMost of my formal education was science or engineering oriented. I regarded science and engineering as the pinnacle of learning. The extreme position of my youth: All logic fell within math and science, while history, language arts, and other non-science areas were just memorization.Bloom’s research pushed me beyond my original thinking. Memorization and creativity are vital to all areas of knowledge. Here’s how.Learning Only Starts With MemorizationAll learning, at the very beginning, is memorization. For example, when we first learn mathematics, we start by memorizing the counting numbers (1, 2, 3, …) and we eventually figure out that we can’t count to infinity. Later we learn the four basic math operations (addition, subtraction, multiplication, division) and we learn how to apply these operations to word problems. Fast forward a few years, and we learn to apply differential equations to a skydiver falling to earth via parachute. Or we may create a mathematical spreadsheet model to decide whether to invest in a business.Learning math starts with with memorization. As we advance, we eventually absorb enough to apply what we’ve learned in creative ways.Bloom’s Taxonomy, SummarizedBloom’s Taxonomy can be summarized (from lowest level to highest) as follows:      Remembering (Lowest Level) - All learning starts with memorization. For example, before we can learn how to read and write the English language, we need to memorize the English alphabet.        Understanding -  After we memorize the alphabet, we need to understand how the letters come together to form words.        Applying -  Can we combine words in different ways to form sentences and express thoughts?        Analyzing -  Spotting differences. Comparing and contrasting. For example, can we take something written by others and express it in our own words while maintaining accuracy?        Evaluating -  Arguing and appraising. Having completed an analysis, can we justify our conclusions?        Creating (Highest Level) -  Having achieved at the previous levels, can we move the body of knowledge forward? Can we express entirely new points of view?  More ResourcesGoogle lists tons of articles on Bloom’s Taxonomy if you would like to know more.Attribution NoteThe graphic at the top of this post is from an Oregon State University web site. The original author was not cited. If you know who the original author is, please share the info so that a proper citation can be included here. Thanks!",
      "url": " /blog/2015/03/20/blooms-taxonomy-for-learning/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-03-19-using-rlwrap-with-mit-scheme-repl": {
      "title": "Using rlwrap with MIT&apos;s Scheme REPL",
      "content"	 : "Users of the Linux or OS X command line know that they can hit the up arrow to view the previously executed command. However, this behavior is missing from the mit-scheme read-evaluate-print-loop (REPL). mit-scheme is the language used in SICP.For example, hitting the up arrow in the Scheme REPL gives us this non-useful result: ^[[A. The previous command is not repeated.How do we add up-arrow functionality to the mit-scheme REPL? By using rlwrap.Installing rlwrapOn Mac OS X with Homebrew, first update Homebrew with $ brew update.Then install rlwrap.$ brew install rlwrap==&amp;gt; Downloading https://homebrew.bintray.com/bottles/rlwrap-0.42.yosemite.bottle.tar.gz######################################################################## 100.0%==&amp;gt; Pouring rlwrap-0.42.yosemite.bottle.tar.gz🍺  /usr/local/Cellar/rlwrap/0.42: 29 files, 312KYou can verify the rlwrap installation as follows.$ which rlwrap/usr/local/bin/rlwrapUsing rlwrapTo use rlwrap with scheme do the following.$ rlwrap schemeAdd an Alias to ~/.bash_profileTo speed things up a bit, we can add an alias to ~/.bash_profile.# for rlwrap &amp;amp; scheme support. Details: http://rayhightower.com/blog/2015/03/19/using-rlwrap-with-mit-scheme-repl/alias sicp=&#39;rlwrap scheme&#39;So now when we type sicp at the command line…$ sicpMIT/GNU Scheme running under OS XType `^C&#39; (control-C) followed by `H&#39; to obtain information about interrupts.Copyright (C) 2014 Massachusetts Institute of TechnologyThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.Image saved on Saturday May 17, 2014 at 2:39:25 AM  Release 9.2 || Microcode 15.3 || Runtime 15.7 || SF 4.41 || LIAR/x86-64 4.118 || Edwin 3.1161 ]=&amp;gt;Exactly what we expect.ConclusionAnd now we have it. The up-arrow behavior that we enjoy at the command line is now in the Scheme REPL. Big savings in time, and better for learning.",
      "url": " /blog/2015/03/19/using-rlwrap-with-mit-scheme-repl/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-03-12-apple-car-not-likely": {
      "title": "Apple Car? Not Likely.",
      "content"	 : "  You have to figure out what your own aptitudes are. If you play games where other people have the aptitudes and you don’t, you’re going to lose. And that’s as close to certain as any prediction that you can make. You have to figure out where you’ve got an edge. And you’ve got to play within your own circle of competence.~Charlie Munger, Vice Chairman, Berkshire HathawaySome journalists speculate that Apple is building a car because they recently hired some automotive engineers away from Tesla.My prediction: Apple is not building a car. Apple might build a device that plays a major role in the automotive marketplace. But a fully assembled automobile is too far outside the company’s circle of competence, as Charlie Munger might say. Apple succeeds because the company maintains disciplined focus within its circle of competence.AppleTV as an ExampleCase in point: AppleTV. Pundits predicted an AppleTV with a large LCD display, in a form factor that might be built by Samsung or Sony. But instead, Apple created a black set-top box about the size of a hockey puck. Apple focused on those parts of the television ecosystem that are most closely tied to their circle of competence:  User experience  Internet connectivity  Content deliveryApple entered the television marketplace while remaining within its circle of competence. Even better: Content delivery is a cash flow engine that generates revenue for as long as Apple can push bits down the wire.iPhone ExampleWhen Apple entered the mobile phone market, they focused within their circle of competence.  User experience for computing devices, using a subset of Mac OS X.  Internet connectivity via WiFi.  Content delivery (iTunes).In the area where Apple lacked experience, mobile network management, they partnered with an industry veteran (initially AT&amp;amp;T). By focusing within its circle of competence, Apple was able to negotiate aggressive terms with AT&amp;amp;T, terms which included no carrier branding on the physical device. Later, Verizon, T-Mobile, Sprint, and all of the other major players begged for the same deal as AT&amp;amp;T.And, as with AppleTV, content delivery is an engine that prints money for as long as Apple can push bits over the radio waves.Apple’s Automotive EntryApple will not build a fully assembled automobile. They’re more likely to create an auto-related device that leverages their existing circle of competence. Something that shows off their skills with user experience, Internet connectivity, and content delivery.Apple’s automotive content delivery offering will be interesting. The company currently offers maps and directions. What’s next… maintenance data? Entertainment? How about a “find my car” serivce for those of us who forget where we park at the shopping mall.Apple’s automotive device will fit well within the company’s circle of competence. And Apple fans will line up around the block to buy it.",
      "url": " /blog/2015/03/12/apple-car-not-likely/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-03-06-html5-and-css3-the-complete-manual": {
      "title": "HTML5 &amp; CSS3: The Complete Manual",
      "content"	 : "                The biggest challenge for a software developer: Absorbing the latest knowledge while simultaneously keeping clients happy. Where does the time go?Fortunately, when it comes to HTML5 and CSS3, a UK-based publisher has released a just-the-facts guide that may help. At 127 pages, the entire publication (they call it a bookazine) can be devoured in a single day. Imagine Publishing’s HTML5 &amp;amp; CSS3: The Complete Manual is well worth the time investment.Note: A version of this article also appears in the Book Reviews section of ChicagoRuby.org.This Book’s Best FeatureOne thing I like about this book: Nothing is assumed. All explanations are clearly presented from square one. The introduction even defines the terms hypertext and responsive design in words that could easily be hijacked for your next presentation to non-technical management.Personally, I appreciate the don’t-assume-anything definitions. I completed all of my formal computer science training in the last century, before we knew how far this Internet thing might go. Books like this help to fill in the gaps. Well done, authors!Working the ExamplesIf you’re already current on HTML &amp;amp; CSS, the examples in the beginning of the book will be too easy for you. Skip ahead to the examples toward the end and work on those. The sections on responsive design, Bootstrap, and Foundation are especially useful.Spelling DifferencesMy British-speaking friends and I sometimes tease each other about variations in American vs UK spelling for certain words. “Colour” vs “color” and that sort of thing. This book uses UK conventions.I spotted a fair number of typos in the book’s code examples. Typos in human-readable text are no big deal. But a missing &amp;gt; or = in a book about HTML and CSS can make or break an example. Of course, we’re all human and typos are simply a fact of life.Suggestion for the publishers: Setup a GitHub repo with the code samples. That way, if typos in code are discovered (always certain because we’re human) the typos can be corrected and shared immediately.ConclusionThe bottom line: HTML5 &amp;amp; CSS3: The Complete Manual is worth reading, especially if you need a quick way to keep up with web trends.",
      "url": " /blog/2015/03/06/html5-and-css3-the-complete-manual/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-03-03-jruby-9000-on-mac-os-x": {
      "title": "JRuby 9000 on Mac OS X",
      "content"	 : "                Moore’s Law is about to run into a wall. Therefore, anything that software developers can learn about concurrency will be critical in coming years. Enter JRuby 9000.What is JRuby?JRuby is an implementation of the Ruby programming language that runs on the Java virtual machine (JVM). Advantages of running on the JVM include:  Reaping the performance benefits that come from decades of JVM tuning.  The ability to call time-tested Java libraries from Ruby programs.  The performance benefits that come from concurrency, built into the JVM.Installing JRuby 9000 on OS XGrab the latest .tar file from JRuby Downloads and extract it by double-clicking on it. As of this writing, the latest version was jruby-bin-9.0.0.0.pre1.tar.gz.Next, move the extracted files to /opt/jruby/. For example, if you downloaded the .tar file to your ~/Downloads directory, this command will rename the extracted directory to jruby/ in the process.$ sudo mv ~/Downloads/jruby-9.0.0.0.pre1/ /opt/jruby/Password:$ And finally, add the following line to ~/.bash_profile (or where ever you choose to set your $PATH variable).export PATH=&quot;/opt/jruby/bin:$PATH&quot;Testing the JRuby 9000 installationTo test the JRuby 9000 installation, re-start your terminal or use $ source ~/.bash_profile. And then$ jruby --versionjruby 9.0.0.0.pre1 (2.2.0p0) 2015-01-20 d537cab Java HotSpot(TM) 64-Bit Server VM 25.25-b02 on 1.8.0_25-b17 +jit [darwin-x86_64]$ which jruby/opt/jruby/bin/jruby$ Why not RVM?Given that I like RVM, why didn’t I simply use RVM to install JRuby 9000? Answer: The instructions for installing a pre-release version of JRuby via RVM were unclear to me. Extracting the executables and adding the directory to the $PATH was more grok-able. If your experience is different from mine, feel free to share in the comments below.Next StepsNext steps include experiments with concurrency. JRuby concurrency experiments with the 18-core Parallella look especially interesting. More to come.",
      "url": " /blog/2015/03/03/jruby-9000-on-mac-os-x/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-02-28-raspberry-pi-2-model-b-quad-core": {
      "title": "Raspberry Pi 2 Model B Quad Core",
      "content"	 : "                The Raspberry Pi Foundation has upped their entry in the single-board computer competition. Raspberry Pi 2 Model B boasts a quad core ARM CPU and 1GB of RAM. More important: Benchmarks show that the board is 6x faster than the previous model. And the performance bump has been achieved while the price remains low: Roughly $45.Getting the board up and running is easier, too. You can buy a pre-built Linux image on micro SD. Or you can download the New Out Of the Box (NOOBS) image yourself. Depending on the speed of your internet connection, you can be up in running in less than an hour.Easier Than BeforeSpecial note about the NOOBS image: You don’t need a special utility to burn an SD card like before. The steps are:  Download the NOOBS image and unzip it.  Format a micro SD card that’s at lease 4GB in size.  Drag the unzipped NOOBS files to the micro SD card.  Insert the micro SD card into the Raspeberry Pi, apply power, and watch it boot.Having done things the old way, I was surprised that the process was so simple this time. Hats off to the Raspberry Pi Foundation for a great installation experience.Login InformationAfter the device boots, you will need login credentials. These have not changed from the previous version:raspberripi login: piPassword: raspberryNote that the cursor will not move while you type the password.Next, start the X Window environment.$ startxAnd your desktop will look something like this.Running Ruby, RailsThis incarnation of Raspberry Pi comes with Ruby 1.9.3 pre-installed. Of course, if you want to manage multiple versions of Ruby, RVM is a great way to go.To install RVM, first run gpg to verify that you will get an uncorrupted (or un-tampored with) version of RVM.$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3$ Next, install RVM.$ curl -sSL https://get.rvm.io | bash -s stable$ And finally, let the current terminal session know that RVM is installedby typing the following at the command line.$ source /home/pi/.rvm/scripts/rvm$ You can verify that RVM is installed by checking its version number like so…$ rvm --versionrvm 1.26.10 (master) by Wayne E. Seguin &amp;lt;wayneeseguin@gmail.com&amp;gt;, Michal Papis &amp;lt;mpapis@gmail.com&amp;gt; [https://rvm.io/]$ Installing Ruby VersionsTo install the latest stable version of Ruby…$ rvm install ruby$ RVM will download dependencies as part of the installation process. From there, you can create RVM gemsets and gem install rails or any other libraries you may need. More documentation can be found at http://rvm.io.",
      "url": " /blog/2015/02/28/raspberry-pi-2-model-b-quad-core/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-02-26-keep-the-fun-in-computing": {
      "title": "Keep the Fun in Computing",
      "content"	 : "  “I think that it’s extraordinarily important that we in computer science keep fun in computing… What’s in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.” ~ Alan J. Perlis,from the Dedication page in SICPEnrolling in the Chicago SICP study group, I expected to dive into Lisp. I expected to be challenged. What I didn’t expect: The fun, somewhat irreverent attitude of the SICP authors. And why not? Software development is one of our newest professions. Other professionals are made more effective through our work. Everybody benefits from the increase in productivity.If you are a software developer in the Chicago area, be sure to check out the SICP group. As the SICP authors say, you don’t need to know Lisp to embark on this path; you’ll learn Lisp as we travel along. And our brains will be stretched in new and interesting ways.What an exciting time to be alive!",
      "url": " /blog/2015/02/26/keep-the-fun-in-computing/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-02-18-sicp-study-group": {
      "title": "SICP Study Group",
      "content"	 : "                Veteran developer Dave Astels is leading a Structure and Interpretation of Computer Programs (SICP) study group for the next ten months. The Massachusetts Institute of Technology uses SICP as the text for one of its early computer science courses. Session one of Dave’s group starts today at 6pm. For any developer who wants to ramp up in skill, the SICP study group is an excellent opportunity to do so.MIT makes the entire text of SICP available online for free. Or you can buy a paper version of the book at Amazon.Thank you Brad’s Deals and Ken Walters for hosting the SICP group.Installing Scheme on Mac OS XExamples and exercises in SICP are written in Scheme, a dialect of the LISP programming language. As of this writing, installing mit-scheme via Homebrew did not work for me.~$ brew install mit-schemeError: No available formula for mit-schemeSearching formulae...Searching taps...homebrew/x11/mit-scheme~$ Update: Some members of the SICP study group had success installing mit-scheme with Homebrew, while others (like me) did not. We did not determine why some of the Homebrew installations were successful. However, the non-Homebrew method described in this article seems to work across-the-board.Alternative solution: Grab a pre-compiled binary from the MIT/GNU Scheme site. The mit-scheme-9.2-x86-64.dmg disk image was the right one for my early 2013 MacBook Pro. Your system may be different.                To install, drag the MIT/GNU Scheme.app icon into the Applications folder on the Mac.Setting Up SymlinksScheme is run from the command line. In order to make that work, we need to setup two symbolic links.First, create a symbolic link called mit-scheme-x86-64 in your home directory that links to the appropriate executable in the /Applications directory. In other words…$ sudo ln -s /Applications/MIT:GNU Scheme.app/Contents/Resources /usr/local/lib/mit-scheme-x86-64Password:$ Next, setup a symlink that will let us simply type scheme when we want to use this version of the language…$ sudo ln -s /usr/local/lib/mit-scheme-x86-64/mit-scheme /usr/bin/scheme$ Confirm that the links are in place by checking the scheme version number.$ scheme --versionMIT/GNU Scheme microcode 15.3Copyright (C) 2014 Massachusetts Institute of TechnologyThis is free software; see the source for copying conditions. There is NO warranty; not even forMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.Image saved on Saturday May 17, 2014 at 2:39:25 AM  Release 9.2 || Microcode 15.3 || Runtime 15.7 || SF 4.41 || LIAR/x86-64 4.118 || Edwin 3.116Moriturus te saluto.$ If you are like me, you will laugh at the gladiator message at the end of the version info.Better Way to Symlink?Why not create a single symbolic link directly from the Resources directory to the scheme command in /usr/bin? I am not certain, but I suspect it has something to do with expectations within the Scheme interpreter. The interpreter may be expecting certain files to be in certain directories. I’ll update this article when I learn more.Running SchemeTo start the Scheme read-evaluate-print-loop (REPL)…$ schemeMIT/GNU Scheme running under OS XType `^C&#39; (control-C) followed by `H&#39; to obtain information about interrupts.Copyright (C) 2014 Massachusetts Institute of TechnologyThis is free software; see the source for copying conditions. There is NO warranty; not even forMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.Image saved on Saturday May 17, 2014 at 2:39:25 AM  Release 9.2 || Microcode 15.3 || Runtime 15.7 || SF 4.41 || LIAR/x86-64 4.118 || Edwin 3.1161 ]=&amp;gt; Exit the REPL by typing CTRL-D.Looking forward to SICP tonight!AcknowledgementThanks Jackson Isaac for the information about symlinks as used with this version of scheme.",
      "url": " /blog/2015/02/18/sicp-study-group/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-01-31-windycityrails-and-you": {
      "title": "WindyCityRails and You",
      "content"	 : "If you have ever attended WindyCityRails: Thank you for helping to make the event more exciting every year. Organizers strive to give developers actionable technical information in a conference format. So far, it’s working!2015 marks our first year with a pre-conference survey. Length: Four questions. Answer as many as you like via the quick online form.  What web-related technologies are you most excited about this year?  What web-related technology is giving you the biggest headaches right now?  Are there any particular speakers you’d like to see at WindyCityRails 2015?  What social networks do you actively use?Please stop by and fill out the survey when you can.We look forward to hearing from you. And we look forward to delivering another strong year at WindyCityRails!",
      "url": " /blog/2015/01/31/windycityrails-and-you/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-01-22-context-changes-everything": {
      "title": "Context Changes Everything",
      "content"	 : "There are some cases where time zone information is absolutely critical. For example: When scheduling a video conference that crosses national boundaries.A few hours ago, Google sent me a reminder about today’s LinuxBarbados meeting. The group meets via video conferencing software over the web. Google’s reminder was confusing because it showed the time without the time zone (screenshot below). LinuxBarbados is based in the Caribbean, and members participate from multiple time zones around the world.Google’s automated reminder said 3pm - 4pm with no time zone reference. How confusing! Members of the group received the same automated reminder with the same information, regardless of time zone. A small change, displaying the time as 3pm - 4pm (CST) would solve the problem.Other Context ExamplesWhen people speak with each other directly, context is implied. But when communication happens in printed form, it’s helpful to have the context in print, too. For example:  Walking down the street, you see a poster advertising a concert on January 29th. No year is shown. Is this an old poster for a concert that happened last year on Jan 29th? Or is the event happening next week?  A restaurant menu offers delivery service. Just call the number, and order your food. The phone number is seven digits long, with no area code. Most customers would abandon the menu in favor of a restaurant with more complete information.  Following the train of thought in the previous example: Since phone service has fallen in price, many people call internationally on a more regular basis. A complete phone number should include the country code.Context changes everything. Something all of us need to remember.",
      "url": " /blog/2015/01/22/context-changes-everything/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-01-20-chicago-node-dot-js": {
      "title": "Chicago Node.js",
      "content"	 : "                The Chicago Node.js user group invited me to present Node.js Under Water, an overview of the OpenROV underwater robot, this evening. Slides appear below.Every version of this talk is tailored to the audience. This version focuses on OpenROV hardware components since this group certainly knows Node.js. Information has been added on hardware gotchas and tether management.Thank you Chicago Node.js organizers and members for having me.",
      "url": " /blog/2015/01/20/chicago-node-dot-js/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2015-01-03-no-windows-stronger-planes": {
      "title": "No Windows. Stronger Planes.",
      "content"	 : "It is always good to start the new year with something inspirational. Technicon Design created a 3-minute video to demonstrate their IXION Windowless Jet Concept. Worth watching full screen.How can a plane with no windows offer better views for passengers?Windows vs Fuselage StrengthWhen we add a window to the fuselage of an airplane, we reduce the strength of the fuselage. Glass is weaker than aluminum. So aircraft engineers need to make up for the lost strength. The engineers might add a support structure, thicken the aluminum, or try a different alloy.But when windows are eliminated, structural integrity is maintained. And the weight of the plane can be reduced because we can eliminate the extra supports.How Do We See Without WindowsAs shown in the Technicon video, views can be better without windows!  Cameras are mounted at strategic points on the outside of the plane. And the inner surface of the plane, the part that passengers can see, is covered with a display material. Computers take the images captured by the external cameras, and they translate that into images for display on the inner walls of the plane.The result: Passengers feel like they’re flying in a glass plane. That’s an idea best communicated through the Technicon video.Applying Tech Across IndustriesProcessing power continues to fall in price. Flat panel monitors get less expensive each day. The window-less plane shows us what can happen when advances in one industry are applied to another. Blend these advances with a high-speed internet connection delivered via satellite, and the Internet of Things (IoT) takes a great leap forward. Cross-discipline engineering is exciting.Happy New Year!",
      "url": " /blog/2015/01/03/no-windows-stronger-planes/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-12-31-looking-inside-pygments": {
      "title": "Looking Inside the Pygments Plugin",
      "content"	 : "This blog uses pygments.rb for syntax highlighting. Recently pygments.rb stopped working, so I had to dig inside to determine the problem and apply a solution.Full disclosure: Pygments didn’t simply stop working. I applied updates related to Octopress and lunr.js, and then it stopped working. So the root cause is me! Rather than back-out the updates, I decided to push forward because lunr.js will improve the search experience for visitors. Search options will be discussed in a future post.Starting With the Error MessageAs with all Octopress based blogs, the $ rake generate command creates a new set of static pages every time the command gets run. Normally the process is smooth. Here’s the error message that resulted this morning.~$ rake generate...jekyll 2.0.3 | Error:  Pygments can&#39;t parse unknown language: &amp;lt;/p&amp;gt;.$ What unknown language? Something was fishy. Fortunately, pygments is an open source plugin. Solving the problem was non-trivial, but doable.Exploring Pygments InternalsGoogle, Stack Overflow, and the Octopress documentation gave clues on where to explore. Adding a few lines to source/plugins/pygments_code.rb provided insights on what pygments was “thinking”.require &#39;pygments&#39;require &#39;fileutils&#39;require &#39;digest/md5&#39;PYGMENTS_CACHE_DIR = File.expand_path(&#39;../../.pygments-cache&#39;, __FILE__)FileUtils.mkdir_p(PYGMENTS_CACHE_DIR)module HighlightCode  def self.highlight(str, lang)    # Next three lines let us see what pygments &quot;thinks&quot;.    print &quot;nnrth_str = #{str}&quot;    print &quot;nrth_lang = #{lang}&quot;    print &quot;nrth_file = #{__FILE__}nn&quot;    ...endObserving the Results, Applying a SolutionNext step: Run $ rake generate and see what happens. Turns out that the lastest version of pygments halted for two reasons:  Some of my older blog posts did not contain a space between the triple-backtick characters and the name of the language being highlighted. Earlier versions of pygments did not care, but the current version is a stickler.  pygments appears to want a blank line between any triple-backtick line and any other text in the blog post.Vim-fu allowed me to apply solutions with minimal manual work. And now pygments works well.On to search, to be discussed in a future blog post.",
      "url": " /blog/2014/12/31/looking-inside-pygments/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-12-30-owc-thinks-ahead": {
      "title": "OWC Thinks Ahead",
      "content"	 : "                Every computer user has to deal with this at some point. Your machine runs out of storage space: hard drive, SSD, or whatever mass storage you happen to use. In my case, the 512GB SSD in my early 2013 MacBook Pro was over 90% full. Time for an upgrade.Fortunately (and contrary to what the Apple literature says) it is possible to upgrade the SSD in a MacBook Pro. RAM is different because the MBP’s RAM is soldered to the logic board. But the SSD plugs into a socket. The SSD upgrade path is well-documented on YouTube and elsewhere.Ordered from OWCOrdering an SSD from Amazon would have saved a few bucks, but I chose Other World Computing instead. Past experience with OWC has been outstanding. The company consistently offers high-performance gear. It was all a matter of trust.On the day my 960GB SSD arrived, I smacked myself on the forehead. I realized (too late) that I forgot to order a screwdriver for the special pentalobe screws that hold the MacBook Pro together.Screwdrivers IncludedBut… When I opened the SSD box from OWC, I was pleasantly surprised. A pentalobe screwdriver was included in the SSD kit, along with a six-point Torx screwdriver. Both screwdrivers are needed for the installation. Thanks to OWC’s forethought, my upgrade plans moved forward undisturbed.The hardest part of the SSD upgrade was waiting patiently for the Time Machine restoration to complete.OWC thinks ahead.Lesson LearnedWisdomGroup turned twenty years old today. Whenever I experience outstanding service from a company, I pause to think about how to apply the lesson to WisdomGroup and all of our related ventures. The lesson in this case: Think ahead. Anticipate the needs of the customer. And fulfill those needs.Thanks OWC for making the SSD upgrade process as seamless as possible. And thanks for the business lesson, too!",
      "url": " /blog/2014/12/30/owc-thinks-ahead/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-12-22-too-soon-for-alpha-centauri": {
      "title": "Too Soon for Alpha Centauri",
      "content"	 : "Bad news: I have decided to cancel RubyCaribe for 2015. Ticket sales are insufficient to cover the cost of the event. Every person who bought a ticket will receive a full refund. All tickets sales have been refunded.Barbados is a beautiful island nation with welcoming people, a university that leads in multiple technical areas, and a thriving economy. The RubyCaribe (pronounced ka-REEB) organizers will make the event happen in some form at some point in the future. Just not now.Alpha CentauriNASA has launched successful missions to the Moon, Mars, and other bodies in our solar system. NASA would like to visit Alpha Centauri, 4.4 light years away. But they will only launch an Alpha Centauri mission after key prerequisites (maybe the theoretical Alcubierre drive) are in place.It’s too soon for Alpha Centauri, right now. But one day, humans will get there.The RubyCaribe team has achieved eight years of success with WindyCityRails, ChicagoRuby, and events focused on NoSQL and mobile technologies. With that track record, I believed that we could make RubyCaribe work in 2015. But reality disagrees with me.It’s too soon for RubyCaribe, right now. But we will get there.                Upside: LinuxBarbadosWhile planning RubyCaribe, our team began an amazing relationship with the University of the West Indies at Cave Hill (UWI). We collaborated with UWI to create LinuxBarbados. The monthly LinuxBarbados meetings are an exciting way to grow your open source software and hardware skills. Discussions cover Linux, Parallella, Raspberry Pi, Ruby, Java… and more.If you’re in Barbados, you can attend in person on the UWI campus. If you’re not in Barbados, you can still participate because every LinuxBarbados meeting includes a live video conference. Sign up at LinuxBarbados.org if you’d like to know more.Next Steps for RubyCaribeMoving forward, our team will take an Alpha Centauri approach to RubyCaribe. We will get there. And we invite you to enjoy the journey with us.Do you have thoughts about RubyCaribe? If so, you’re welcome to share via the contact form.  What do you like or dislike about RubyCaribe?  What do you think about the content?  What do you think about the price?  What do you think about the location?  Is there anything else you would like to share?Anonymous feedback is fine. Just put dummy values in the appropriate fields.Thanks for listening. We look forward to seeing you at  ChicagoRuby and WindyCityRails.",
      "url": " /blog/2014/12/22/too-soon-for-alpha-centauri/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-12-18-git-vulnerability-on-mac-os-x": {
      "title": "Git Vulnerability on Mac OS X and Windows",
      "content"	 : "Today the Git core team announced a security vulnerability and a corresponding fix. Hats off to the Mercurial team (yes, Mercurial!) for finding the problem. Hats off to the Git team for making the announcement, and for delivering a fix so quickly.What’s the Problem?If your Git installation remains un-patched, then a malicious person could over-write the .git/config directory in one of your repositories. This would allow them to alter your Git history and make changes in the repo without your knowledge. Details.The vulnerability exists on Mac OS X and Microsoft Windows. This article will discuss solving the problem on Mac OS X only, since that is my primary development platform.Mac and Windows users are exposed because their file systems are not case-sensitive by default. Linux users who use a case-sensitive file system are protected. But Linux users might want to apply the patch anyway because (as stated by the Git core team):  Even though the issue may not affect Linux users, if you are a hosting service whose users may fetch from your service to Windows or Mac OS X machines, you are strongly encouraged to update to protect such users who use existing versions of Git.~Git Core TeamIs My Machine Vulnerable?I know that my machine was vulnerable because I was running an un-patched version of Git, as seen below.~$ git --versiongit version 2.1.3~$ How to UpgradeHomebrew makes it easy to install and maintain Git. First, update Homebrew…~$ brew updateUpdated Homebrew from d243310d to a6ab9f13.==&amp;gt; New Formulaeabi-compliance-checker        deis                     glbindingasciinema             distribution                rbenv-bundle-execctunnel                  game-music-emu           restund==&amp;gt; Updated Formulaeabcm2ps                         jagsafl-fuzz                    jansson...~$ Then, upgrade Git…~$ brew upgrade git==&amp;gt; Upgrading 1 outdated package, with result:git 2.2.1==&amp;gt; Upgrading git==&amp;gt; Downloading https://downloads.sf.net/project/machomebrew/Bottles/git-2.2.1.y######################################################################## 100.0%==&amp;gt; Pouring git-2.2.1.yosemite.bottle.tar.gz==&amp;gt; CaveatsThe OS X keychain credential helper has been installed to:  /usr/local/bin/git-credential-osxkeychainThe &quot;contrib&quot; directory has been installed to:  /usr/local/share/git-core/contribBash completion has been installed to:  /usr/local/etc/bash_completion.dzsh completion has been installed to:  /usr/local/share/zsh/site-functions==&amp;gt; Summary    /usr/local/Cellar/git/2.2.1: 1356 files, 31M~$ … and finally, verify that the patched version is in use.~$ git --versiongit version 2.2.1~$ Avoid Conflicts With Apple’s GitAs Kristjan Cocev notes in the comments below, Mac OS X comes with its own Git installation. By the time you bought the machine, that pre-installed version is probably out of date. My pre-installed Git was:~$ /usr/bin/git --versiongit version 1.9.3 (Apple Git-50)~$ Apple’s pre-installed Git isn’t bad, but here’s the problem. Depending on how your PATH variable is setup, there might be a conflict between Apple-installed Git and the one you installed via Homebrew.Here are two alternatives for fixing the conflict before it causes problems.  Change your PATH variable so that Homebrew-installed Git is executed long before Apple-installed Git gets reached, OR…  Rename Apple-installed Git as follows:~$ sudo mv /usr/bin/git /usr/bin/git-applePassword:~$ So now, if you want to use Apple’s pre-installed Git (unlikely) you can simply navigate to /usr/bin/git-apple.Open Source RocksAgain, hats off to everyone in the open source community who pulled together to make this fix happen!",
      "url": " /blog/2014/12/18/git-vulnerability-on-mac-os-x/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-11-16-ignite-rubyconf-2014": {
      "title": "Ignite RubyConf 2014",
      "content"	 : "                Ignite is a presentation format where the slides advance automatically every 15 seconds whether the presenter is ready or not. Twenty slides, 15 seconds each, five minutes total. Presenters are challenged to present their ideas quickly and clearly before the time runs out.Ignite is similar to Pecha Kucha. The two formats differ only in slide duration (20 seconds per slide with Pecha Kucha).SDRuby ran an Ignite event on the day before RubyConf 2014. Slides from my OpenROV presentation at Ignite RubyConf 2014 appear below.  Thanks SDRuby for hosting the Ignite event!If you like the idea of hacking on Ruby and OpenROV, check out RubyCaribe.",
      "url": " /blog/2014/11/16/ignite-rubyconf-2014/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-10-30-chicagoruby-expands-to-north-shore": {
      "title": "ChicagoRuby Expands to North Shore",
      "content"	 : "Long-time observers of ChicagoRuby know that the group is always striving to achieve more. Latest move: ChicagoRuby is now hosting a monthly meetup on Chicago’s North Shore. The first meeting of ChicagoRuby: North Shore will be held on Saturday, December 6, 2014 at 10:30am. Visit Meetup.com for details and to RSVP.Why the North Shore?Why expand to Chicago’s North Shore? One reason: Several ChicagoRuby members live there, and travelling to meetings downtown and in Elmhurst can be quite a haul.The bigger reason: Two members have stepped up to manage the north shore operation. Doug Harman and Stu Gerstein have been active in Elmhurst for a long time. They were chosen as organizers because they are vocal and they have already done the preliminary leg work.That’s how we roll in ChicagoRuby. Many years ago, Ginny Hendry demonstrated that if you push for a new activity in ChicagoRuby (like hack nights) you might end up running it!Exciting Year2014 has proven to be an exciting year for ChicagoRuby. So far, the group has…  Collaborated with the University of the West Indies at Cave Hill, Barbados to form LinuxBarbados.  Built alliances with top-notch developers in multiple countries to create RubyCaribe.  Expanded the monthly Chicago-area activities to four per month.  Grown the organizer team to ten (10) members.Looking forward to more!",
      "url": " /blog/2014/10/30/chicagoruby-expands-to-north-shore/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-10-21-geekfest-and-openrov": {
      "title": "Geekfest and OpenROV",
      "content"	 : "Geekfest is a weekly event hosted by Groupon’s engineering team. Every Tuesday at lunchtime, the company invites members of the tech community to present topics that are interesting to a technical audience.I wish to express my thanks to Groupon for inviting me to present OpenROV at today’s Geekfest.Slides and video appear below. Special thanks to Chelsea Troy for creating a real-time blog post about the presentation. ",
      "url": " /blog/2014/10/21/geekfest-and-openrov/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-10-10-uwi-computer-science-club-and-linuxbarbados": {
      "title": "UWI Computer Science Club &amp;amp; LinuxBarbados",
      "content"	 : "Members of the University of the West Indies (UWI) Computer Science Club and LinuxBarbados just finished a joint session this afternoon. I am grateful that the group invited me to present. Outline (prepared in advance):      30 minutes: Overview of Ruby, Rails, and some alternatives to both. What are the advantages and disadvantages of building web apps with Ruby? Can you build a business with this stuff?        30 minutes: Questions and Answers. This will be a highly interactive time. Anything discussed earlier is fair game. We can explore technical specifics if you like.        60 minutes: Deep dive into anything the group wants to explore related to technology, business, or the combination of the two. If the group doesn’t choose a topic, we will end early. But if the group is interested and engaged, we will continue.  Slides from the presentation are posted here.Thank you UWI for the invitation!If you want to know more about these subjects, and if you would like to study this material in a hands-on lab environment with experts guiding the way, you might enjoy RubyCaribe.",
      "url": " /blog/2014/10/10/uwi-computer-science-club-and-linuxbarbados/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-09-25-nodejs-under-water": {
      "title": "Node.js Under Water",
      "content"	 : "The New York City Node JS Meetup asked me to speak about OpenROV Wednesday evening. About eighty developers came out for the meeting. Their meetings are especially cool because they’re held at the Empire State Building, probably the best known NYC landmark. Thank you Shutterstock, Matt Walters, and all of the NYCNode organizers for making it happen.Presentation VideoThe following video is a rough draft, useful if you want to hear the dialog that went along with the slides. Lots of good questions from the audience.  Slides from SpeakerDeckSlides appear below.  Next Step With OpenROVOur work with OpenROV will climax at RubyCaribe in January 2015. If you’re an intermediate or advanced software developer, and if you like to stretch your brain with Ruby and other languages (like Node.js) then RubyCaribe might be for you.",
      "url": " /blog/2014/09/25/nodejs-under-water/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-09-23-rubycaribe-ruby-gets-hotter-in-january": {
      "title": "RubyCaribe: Ruby Gets Hotter in January",
      "content"	 : "RubyCaribe (pronounced ka-REEB) is a conference for intermediate and advanced software developers who use Ruby. The conference will be held January 27 - 31, 2015 in Barbados. January is a beautiful time to visit the Caribbean, especially if you’re coming from a colder part of the planet.                Intermediate and advanced software developers will find RubyCaribe valuable because…  Each RubyCaribe session features a 30- to 45-minute presentation followed by a 2-hour deep-dive lab. Learning is reinforced throughout.  The venue, Hilton Barbados Resort, sits right on the ocean. Need a stretch break? Take a walk on the beach!Ramp Up Your Ruby SkillsEach RubyCaribe lab will be led by experts in machine learning, mobile app development (iOS and Android), web development, and functional programming. The inventor of RubyMotion, Laurent Sansonetti, will lead the RubyMotion lab. If you already have experience with Ruby or Rails, RubyCaribe will take your skills to the next level.Bonus: OpenROV and Node.js                OpenROV is an open source underwater robot running Linux and Node.js. During two evening sessions, you and your RubyCaribe colleagues will hack on OpenROV. The best developers are polyglot, right? On Friday afternoon, we will grab a boat for live ocean testing with a few OpenROV units. If you ever wanted to experiment with Node.js and IoT, RubyCaribe offers a great opportunity.University CollaborationOn Saturday, the final day of RubyCaribe, we will visit the University of the West Indies at Cave Hill. Faculty and students from the UWI community will demo their work with solar energy and other areas touched by software. Who knows, maybe you’ll give a lightning talk about something you learned at RubyCaribe!Make Your Brain SweatRubyCaribe will work you hard. RubyCaribe will make your brain sweat. So be sure to schedule a few days before or after the conference for sight seeing and relaxation. Rum was invented in Barbados.Where Will You Be in January?If you had to choose between the Caribbean and the cold regions of the northern hemisphere, where would you rather be? RubyCaribe offers the chance to ramp up your skills and enjoy yourself at the same time. What an opportunity.Only One Hundred TicketsOnly one hundred tickets will be sold. Be sure to get yours. Register now. See you at RubyCaribe!",
      "url": " /blog/2014/09/23/rubycaribe-ruby-gets-hotter-in-january/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-09-10-manage-that-openrov-tether": {
      "title": "Manage That OpenROV Tether, Or Else",
      "content"	 : "                Note: This article has been updated with more photos and details describing slip ring installation.Youthful exuberance drove me to pilot my OpenROV before I built a good tether management system. Bad idea! It’s better to have a tether management plan (any plan) before you pilot your OpenROV.This article describes a tether management system that works for me. Other OpenROVers have devices that work, too. Take a look at a few and eventually you will find one that fits you.Off-the-Shelf PartsThis tether management system is constructed entirely from off-the-shelf parts. The main component is an extension cord reel sold by Home Depot for about $14.00. Buy it, gut it, add the slip ring using three screws (also from Home Depot) and you’re good to go.                Slip Ring                The slip ring is central to this solution. A slip ring allows an electrical spool to spin while electrical contacts remain intact. This slip ring was purchased from Adafruit for about $18.00.How to Install the Slip RingFirst, pull the entire orange cable out of the extension cord reel. It would be great to keep the whole orange cable as part of the tether, but then we wouldn’t have room for the original tether (twisted pair). Cut the orange cable so that only one meter remains attached to the reel assembly.                Next, take the extension cord reel apart. Two phillips-head screws hold the device together. Remove the two screws, and the two orange disks will fall apart.Now let’s focus on the disk without the electrical plugs. You will need to cut a hole in the exact center of this disk. The hole will need to be large enough to let the thicker part of the slip ring through, while allowing enough of an edge for the flange screws. The photos give a clearer picture than the words in this paragraph.After you insert the slip ring, drill holes for the three slip ring mounting screws. One way to do this: Drill one hole first, insert the screw, tighten the nut, and then measure/drill the remaining holes. You’re more likely to align all of the holes correctly this way.Loctite Threadlocker                Loctite makes a threadlocker, a gummy substance that keeps screws from jiggling loose. They also make super glue; that’s not what you want for this project. If you use Loctite’s threadlocker on the slip ring screws, they will remain tight until you remove them on purpose.Connecting Inside the ReelTake a look inside the reel. You’ll see black, green, and white cables inside. You won’t need to do anything with the black cable. Splice the green line from the slip ring to the green line inside the reel, and splice the white slip ring line with the white reel line. Your technique may vary, but I used a combination hook splice, solder, hot glue, and heat shrink tubing. If you wear a belt and suspenders your pants will never fall down!                Gotcha: Removing the Extra TabAfter initial assembly, I noticed that there was an extra tab inside of the reel. I don’t know the original purpose for the tab, but since it appeared to interfere with tether operation, it had to go. Wire clippers and a dremel tool made quick work of the tab. The before &amp;amp; after photos tell the story.Attaching the Tether &amp;amp; Topside AdapterNow that you have a functioning reel with a slip ring, attach the twisted pair tether to the 1-meter orange extension cable. Hook splice, solder, hot glue, and heat shrink did the trick for me.The topside adapter can be attached to the top of the reel with Velcro, as shown in the photos throughout this article. Plug the green and white cables from the outer slip ring into the topside adapter, and you’re ready to test the new tether management system.                What should we do with the slip ring’s extra lines? I tied mine together for future use. I may cut them if I decide that they’re not useful. If you have other ideas, feel free to post in the comments below.Everything FitsThe new tether management system is small enough to share space with an OpenROV inside a Nanuk 935 case. The Nanuk case has wheels, a foam interior, and it is rugged and small enough to fly as an airline carry-on.Whip everything out and you’re ready to explore.",
      "url": " /blog/2014/09/10/manage-that-openrov-tether/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-09-09-solar-powered-parallella": {
      "title": "Solar Powered Parallella",
      "content"	 : "                This article describes a simple hardware hack: Making the Parallella run on solar energy.Motivation: The fastest computers in the world gulp electricity at an alarming rate. For example, Tianhe-2 at the National Super Computer Center in Guangzhou, China uses 17.8 megawatts of energy per year. In dollars, that’s roughly $17 million spent on electricity spent each year, depending on how the electricity is sourced.Scientists at Sandia National Laboratories estimate that the earth’s surface absorbs enough solar energy in ninety minutes to power every electrical device on the planet for a full year. A year’s worth of energy in ninety minutes! Surely we can use some of that energy to power our supercomputers.ObservationsThe solar Parallella idea was driven by a few observations:      Parallella only needs five watts of power, five volts at 1 ampere. The device might spike at startup or during heavy calculations, but not by much.        USB provides electrical power at five volts, typically less than 2 amperes.        Cell phone solar chargers are easy to find. These pocket-sized chargers provide power over USB.  Can a cell phone solar charger be hacked to power Parallella? Yes!Building the Hybrid CableHere’s how to get started…                      First, get an off-the-shelf solar device capable of providing 5 volts at 2 amperes. Many cell phone solar chargers will do this, but some will only provide 1 ampere of current. You will need 2 amperes. As of this writing, Amazon sells solar cell phone chargers for about $35.00. Note that the model shown in this article combines a photovoltaic panel with a lithium ion battery. Energy provided by the sun can be stored by the battery for later use.        Cut open a USB cable to expose power (red), ground (black), and signal cables (green and white) as shown in the photo.        Find an old AC adapter cable that fits the Parallella power connection. Cut it open to expose the power and ground wires as shown in the photo.        Solder the USB power to the old adapter power wire, and USB ground to the adapter’s ground.        Cover everything with heat shrink tubing or electrical tape. Heat shrink is preferred since it will last longer.  You’re done! Plug everything in and watch your Parallella boot up. Note that this configuration will also power the Parallella’s cooling fan.                Proof of ConceptIt probably doesn’t make sense to call this a project. It’s more of a proof of concept. Scaling up will cost money and time. But the benefits of solar energy, including cost savings and reduced carbon footprint, make this a worthwhile path to pursue.",
      "url": " /blog/2014/09/09/solar-powered-parallella/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-08-22-openrov-meets-chicago-lake-michigan": {
      "title": "OpenROV Meets Chicago&apos;s Lake Michigan",
      "content"	 : "                OpenROV #1227 went for a spin in Lake Michigan this week. Success! Here are a few first-voyage observations:  The electronics chassis is truly waterproof. Same for the battery compartments. Waterproofing was my biggest concern during assembly. Hats off to the OpenROV team for an excellent set of assembly instructions.  Condensation builds up in the electronics chassis during operation. A quick review of the OpenROV forum tells me that I should add a desiccant bag to the compartment. Or pack the unit in low humidity.  The OpenROV is a little back-heavy. The back dips lower than the front during operation. I should add some weights to the front of the unit.  Tether management is a must. After one voyage (can you really call asimple dip in the lake a voyage?) my OpenROV tether is a mess. Time tobuild a way to manage the tether.What an exciting way to explore Node.js, BeagleBone Black, and the Maker Movement all at once.",
      "url": " /blog/2014/08/22/openrov-meets-chicago-lake-michigan/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-08-21-esc-programming-and-calibration-for-openrov": {
      "title": "ESC Programming and Calibration for OpenROV",
      "content"	 : "                ESCs: New Experience for MeElectronic speed controllers (ESCs) were completely new to me when I first assembled my OpenROV. This article documents my initial misunderstanding (and eventual understanding) of ESCs so that future builders can move forward with fewer glitches.The photo at the top of this page shows an OpenROV controller board, aBeagleBone Black, and three ESCs. This article will focus on the ESCs.Remember This About ESCsUntil all three ESCs are programmed and calibrated, the OpenROV might behave erratically. For example…  The servo that moves the camera up and down will not respond to keyboard commands.  When you turn one ESC switch on, an unrelated motor (or motors, plural) might start spinning. In my case, turning on one ESC (any of the three ESCs) caused two motors to spin.In my case, the programming was correct, but I dropped the ball on calibration. And when the motors responded out-of-sync with the switches, I thought I had soldered some connections incorrectly. De-soldering and re-soldering connections would have been a ton of extra work, and that would not have solved the problem.I reached out to the forum where OpenROV engineer Brian Adams pointed me in the right direction. Brian’s diplomatic response could be summarized as RTFM. So I re-RTFM’d, and it worked!The bottom line: Do the ESC programming and calibration first. If the OpenROV misbehaves, re-check programming and calibration before considering other solutions.Why Use ESCs?Since ESCs require so many steps (programming and calibration) we might logically ask: Why use ESCs at all? Why not use simple analog motors without controllers and call it a day?We use ESCs because the benefits outweigh the work required to configure them. It’s all about control. By using an ESC to control each motor, we can use software to specify the exact number of RPMs and direction for each motor. We can make any motor (or combination or motors) start, stop, or change direction on a dime. Even better: When we move a lever on our controller of choice (keyboard, game controller, etc.) software on the OpenROV controller board decides the exact number of RPMs for each motor at that instant. OpenROV pilots don’t need to think about this process while it happens. It just works.The pilot’s finger moves a controller lever. The lever position gets sent to software on the OpenROV controller board, and the controller board tells each ESC what its corresponding motor should do.In summary, we use ESCs so that OpenROV pilots can have greater control over movement.How to Re-Check ESC Programming                Those of you with ESC experience already know about ESC program cards. I first learned about the cards while researching this problem. Amazing devices! Yes, it is possible to program ESCs using the series of button pushes and beeps in the OpenROV instructions. That’s what I did, and it works. But a program card is faster. Amazon sells ESC program cards for less than fifteen dollars each. Well worth the investment, especially if you’re programming ESCs for several OpenROVs.ESC Calibration GotchaESC calibration was tricky for me because turning on any of the three ESC switches caused two of my motors to spin: vertical and port. Further, since my electronics chassis was (mostly) assembled by the time I got to the calibration step, it wasn’t easy for me to trace each power switch to its corresponding ESC.So here’s what I had to do.                  First, I took everything apart, while keeping the electronic leads (those which had already been soldered) intact. I needed to do this so I could see where each wire was going.  Next, I labeled the back of each ESC switch with its corresponding ESC number. I did not want to go through the disassembly step again! The Brother P-Touch label maker was perfect for this step.  Finally, I followed the ESC calibration steps while ignoring the behavior of the motors. For example, turning on ESC1 caused the motors connected to ESC1 (port) and ESC2 (vertical) to spin. I ignored the motors while plowing through OpenROV’s written calibration steps.Modified Calibration StepsHere are the OpenROV calibration steps, with slight tweaks based on my personal experience.                  Each ESC switch has a red reset button. To turn the ESC on, move its slider switch toward the red reset button. The off position is in the opposite direction.  With all of the ESCs switched off, go ahead and power up the OpenROV. The motors should remain stationary at this point. Connect with the cockpit software and open the diagnostic pane.  Grab one ESC switch, and hold down its red reset button while powering it on. (At this point, two of my motors began spinning, V and P. I ignored the spinning motors while plowing through the rest of the steps.) You will hear a beeping noise. Let go of the reset button. (It will keep beeping which is fine). While it’s beeping, the red LED inside the corresponding ESC will flash in rhythm with the beeps.  Press reset once and you should hear a single beep. Move that motor’s slider all the way to the right (or click the “1”) and then press the reset on the ESC again. You should get 2 beeps. The motor will not move during this step.  Move that motor’s slider all the way to the left (or click the “-1”) and then press the reset on the ESC again. You will hear three beeps.  After a few seconds the motor will begin to spin. Switch off the ESC, and the motor will stop spinning.  Move the slider back to the middle (or click the “0”).  Repeat these steps with the next ESC until all three ESCs are done.                After calibration:  With all three ESCs powered on, the motors remained stationary, as expected.  Each motor responded to the correct slider within the cockpit software’s diagnostic pane.  The up/down servo for the camera responded correctly to the Q, A, and Z commands.  The motors responded to keyboard commands, as described within the cockpit’s quick reference guide.In other words, calibration worked when I ignored the behavior of the motors while plowing through the steps.SuccessThere is great satisfaction in solving an elusive problem. The OpenROV forum proved to be a powerful and useful resource. Next step: Piloting the OpenROV in Lake Michigan.Photo acknowledgement: The original version of the ESC photo was published in the OpenROV assembly manual. Thanks OpenROV team!",
      "url": " /blog/2014/08/21/esc-programming-and-calibration-for-openrov/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-08-19-openrov-assembly-challenges": {
      "title": "OpenROV Assembly Challenges",
      "content"	 : "                I know this problem can be solved. I just haven’t figured it out yet, and I need help from the OpenROV community to do so.Update: The OpenROV community delivered. Solution: ESC Programming and Calibration for OpenROV.Parts That WorkSoftware image updates on the Beaglebone Black work flawlessly thanks to scripts written by Brian Adams and Dominick Fretz. The cockpit software shows a real-time image from the camera, the LED lights are super-bright, and the lasers hold steady at 10cm apart. My fully assembled OpenROV passes the water submersion test. Yes, it’s waterproof, thanks to O-rings and silicon-based lubricant!What about the motors? The motors work, almost. Could it be theelectronic speed control (ESC) settings, calibration, or less thanperfect soldering? That’s where I need help.Summary of SymptomsWith the cockpit software running and attached to the OpenROV:  If I turn on any of the three ESCs, two of the motors (vertical and port) start running at full blast. The starboard motor remains stationary.  While the V and P motors continue to run at full blast, the starboard motor responds to the cockpit slider controls as expected: +1 makes S run full blast on one direction, -1 sends S full blast in the other direction, and 0 stops the S motor completely. During this exercise, V and P continue at full blast.  Turning off the ESC stops the V and P motors.  When I turn on any of the ESCs, the camera servo jumps slightly, about 10 degrees. And then the V and P motors run full blast.When the cockpit software is not running (and the Google Chrome browser is completely closed):  Turning on an ESC has no effect on the motors.  The camera servo jumps slightly, about 10 degrees, as it did with the cockpit software running. But the motors remain stationary.Interesting behavior!Double-Checking the ESC Settings                During troubleshooting, my first step was to double-check the electronic speed controller (ESC) settings. Setting the ESCs with the beep-and-button-push method was time consuming. And I was concerned that I may have made a mistake in counting the beeps.Solution: I bought an ESC program card. Amazon sells them for less than fifteen dollars, well worth the price when you consider the peace of mind that the card brings. The program card shows each ESC setting with a clear 7-segment LED display, much easier than counting beeps!According to the program card, all of the ESC settings are correct.Using a Power Supply Instead of BatteriesAll of the time spent troubleshooting drained the OpenROV batteries. So I devised a way to apply power directly to the OpenROV without batteries.                The photo reveals the random condition of my work surface, so here’s a verbal description of this hack:  In the background, a power supply set to 12 volts  + lead (red) connected to the + leads of the battery containers, via a wire acting as a Y-connector.  - lead (black) connected to a ground terminal on the OpenROV controller board through a black jumper cableI find that this hack works best if I connect the 12 volt setup first while the Topside Adapter is powered off. Applying power (via USB) to the Topside Adapter turns the entire assembly on.If you’re reading this section and you know a better way for me to connect the power supply, please advise in the comments section below.Advice WelcomeI’m not sure where to look next to solve the challenge with the motors. Maybe I skipped a step somewhere during assembly? Advice welcome!Update: As noted at the beginning of this article, this problem has been solved. Solution: ESC Programming and Calibration for OpenROV.",
      "url": " /blog/2014/08/19/openrov-assembly-challenges/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-08-05-be-awesome-tackle-big-league-problems-at-windycityrails": {
      "title": "Be Awesome. Tackle Big League Problems at WindyCityRails",
      "content"	 : "                Do you see yourself in any of these scenarios?      You have already built a successful Rails app. Now that you’re “done”, you know you can make it better, but you’re not sure how. You want to take your skills to the next level.        You recently graduated from Dev Bootcamp, Starter League, Mobile Makers or another school. You’re ready to meet and interact with your next generation of mentors.        You are no longer a beginner. You have seen advanced developers in action, and you are determined to get there yourself.        Software development is relatively new to you, and you built a successful track record in another profession. You want to meet people who can help you accelerate through the beginner phase so you can launch something useful.  Common thread: It’s time to unleash the awesomeness in your bones. You want to take your skills to the next level, and you are ready to tackle Big League Problems. WindyCityRails is for you.What are Big League Problems?You might think of a big league problem as a good problem. For example, the Rails app you built is pulling in customers, and you’re bumping into the limits of your software architecture. Who knew that so many people would buy from you?Now… How do you scale? Do you buy more hardware, change your architecture, choose a new platform, or some combination of these? Dr. Nic Williams, Brian Shirai, Evan Light, Mark Menard deal with scaling problems. Learn from them.Maybe you built a gem to solve a problem for yourself, and now you want to release your gem to the world. What legal questions do you need to consider? Did Rails face similar challenges in the beginning? Daliah Saper is an attorney who specializes in intellectual property and other open source software issues. Put her team to work for you.How about security? Have you outgrown the Devise gem? Or do you simply need to know more about Devise internals so that you can use it more effectively? Maybe it’s time to abandon username/password logins altogether and go with SQRL. Justin Love and Lucas Mazza might have some ideas for you.Awesome Speakers. Awesome Audience.This year’s WindyCityRails features the most powerful collection of speakers we’ve ever assembled. Check out the complete list of WindyCityRails speakers and ask yourself what you can learn from each one.Even better: Only 300 WindyCityRails tickets will be sold. Our speakers enjoy interacting with audience members throughout the conference. As professionals, they are always learning, too! So if you want some face time with people who understand Big League Problems (and more importantly, Big League Solutions) WindyCityRails is the place for you to be.Get Tickets NowTickets are selling fast. Get yours now at http://www.windycityrails.org/register/. Use the promo code AWESOME to save $75.00 on the standard price.We look forward to seeing you at WindyCityRails!",
      "url": " /blog/2014/08/05/be-awesome-tackle-big-league-problems-at-windycityrails/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-07-30-wanted-community-manager": {
      "title": "Wanted: Community Manager",
      "content"	 : "                WisdomGroup is hiring a Community Manager (CM) to help run our user groups and conferences. This is a part-time independent contractor position, mostly remote, with some on-site work during meetings and conferences. The position could become full-time depending on results produced and community growth.Smart People, Growing TogetherOur community philosophy:  When smart people challenge each other to grow, great things happen.Our community track record is  covered in the article How to Grow a User Group.ResponsibilitiesThe CM will be responsible for the following:  Managing social media feeds (like Twitter) for our groups and events.  Writing blog posts that promote our groups and events.  Interacting with group members through multiple channels: Face-to-face, online video conference, social media, and email.  Helping WisdomGroup to determine the best way to deliver value for group members.Ideal CandidateThe ideal candidate will fit the following description:  Self Starter - Works remotely to produce outstanding results with minimal supervision. Runs through walls to get things done.  Team Player - Works well with other members of the WisdomGroup team. Shares information with team members via Basecamp and other collaboration tools.  Strategic Thinker - Understands how the CM position fits into WisdomGroup’s big picture. Demonstrates understanding by personally taking action where needed.  Aggressive Learner - Currently uses social media tools like Twitter and Facebook. Learns and creates new ways to engage the community with social media tools.About WisdomGroupTo learn more about WisdomGroup, visit:  WisdomGroup.com - company website.  ChicagoRuby.org and LinuxBarbados.org - user group sites.  WindyCityRails.org and RubyCaribe.com - conference sites.  RayHightower.com - president’s personal blog.To ApplyTo apply for the position, email a PDF of your resume to careers@wisdomgroup.com, and include the words “Community Manager” in the subject line. We look forward to hearing from you.",
      "url": " /blog/2014/07/30/wanted-community-manager/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-07-25-linuxbarbados-is-global": {
      "title": "LinuxBarbados is Global",
      "content"	 : "                LinuxBarbados is a user group for open source enthusiasts. The group meets monthly, offering solid knowledge for anyone who wants to ramp up their open source skills. For example, yesterday’s meeting featured a presentation on XBMC by Michael Layne. The presenter dug deep into the tool, offering tips on how to write plugins in C++ or Python.Global ReachThe group is based in Barbados on the campus of the University of the West Indies (UWI) at Cave Hill. Enthusiasts who don’t live in Barbados can participate live online. So far the group has used Google Hangout for video. Other video solutions will be considered as the group continues to grow.Next StepsOrganizers Maurice Beckles and Michael Layne have exciting plans for the group. Take a look at the LinuxBarbados calendar, and join LinuxBarbados online if you want to hear about future events.Whether you live in the Caribbean or in Antarctica, we look forward to seeing you!",
      "url": " /blog/2014/07/25/linuxbarbados-is-global/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-07-25-cloudcamp-chicago-developer-night": {
      "title": "CloudCamp Chicago: Developer Night",
      "content"	 : "CohesiveFT hosted a CloudCamp Developer Night this week. Speakers were Philip Szalwinski of 8th Light, John Downey of Braintree, Marcy Capron of Polymathic, and me. My presentation, Citizen Science With OpenROV, was based on the blog post of the same name.Thank you Margaret Walker for running a great event. Slides appear below.",
      "url": " /blog/2014/07/25/cloudcamp-chicago-developer-night/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-07-21-rvm-and-parallella-what-a-difference-a-shell-makes": {
      "title": "RVM and Parallella: What a Difference a Shell Makes",
      "content"	 : "RVM is an effective way to manage Ruby versions on Linux or OS X. RVM was working well on my Ubuntu-based Parallella, until one day it stopped:linaro-nano:~&amp;gt; rvm listrvm: Command not found.linaro-nano:~&amp;gt;rvm: Command not found. Fortunately, Zach Briggs and I were pairing at a joint OpenHack - ChicagoRuby event when the problem occurred. Zach is an ideal pairing partner; troubleshooting was smooth because he was there. Time to investigate.Explicit PathAfter a few experiments, we discovered that we could run RVM by explicitly specifying the path to the executable:linaro-nano:~&amp;gt; ~/.rvm/bin/rvm listrvm rubies   ruby-2.0.0-p481 [ armv7l ]# Default ruby not set. Try &#39;rvm alias create default &amp;lt;ruby&amp;gt;&#39;.# =&amp;gt; - current# =* - current &amp;amp;&amp;amp; default#  * - defaultlinaro-nano:~&amp;gt;Therefore, it appeared that the Ubuntu/Linux $PATH variable was being ignored. Google led us to consider the shell in use on the Parallella.Which Shell Is In Use?The shell is just a program that lets humans talk to the Linux operating system through a command line interface. Several shell programs exist. Linux users tend to prefer one shell or another. The $SHELL environmental variable points to the one in use.linaro-nano:~&amp;gt; echo $SHELL/bin/tcshlinaro-nano:~&amp;gt;Very interesting. tcsh was the current Parallella shell. I’m more accustomed to bash. Could RVM prefer bash too? We changed one line of /etc/passwd to tell the Parallella to start with bash instead of tcsh and rebooted the Parallella.linaro-nano:~&amp;gt; echo $SHELL/bin/bashlinaro-nano:~&amp;gt;…and now RVM works normally.linaro-nano:~&amp;gt; rvm listrvm rubies   ruby-2.0.0-p481 [ armv7l ]# Default ruby not set. Try &#39;rvm alias create default &amp;lt;ruby&amp;gt;&#39;.# =&amp;gt; - current# =* - current &amp;amp;&amp;amp; default#  * - defaultlinaro-nano:~&amp;gt;Consider Fish?Right after this exercise, Zach and Josh Cheek had a Twitter conversation about a shell called fish. Something new and shiny to explore!Original Plan: RubiniusDid I mention that we originally planned to install Rubinius on the Parallella? Where there are goals, there are yaks waiting to be shaved!",
      "url": " /blog/2014/07/21/rvm-and-parallella-what-a-difference-a-shell-makes/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-07-07-parallella-quick-start-guide-with-gotchas": {
      "title": "Parallella Quick Start Guide (with gotchas)",
      "content"	 : "                Update: Here’s a 25-minute video intro to Parallella.Parallella is a single-board supercomputer smaller than a deck of cards. While today’s fastest laptops contain four processor cores, Parallella has eighteen (2 ARM cores plus an Epiphany chip with 16 RISC cores). The maker of Parallella, Adapteva, is on a mission to democratize parallel computing. The company’s tag line is Supercomputing for Everyone.Everything in this post is based on the official quick start guide created by the Parallella team. These instructions are tailored for a Mac running OS X Mavericks (10.9.3) and a Parallella-16 equipped with the Zynq 7010 chip. I ran into some gotchas during my first Parallella experience. The snags (and solutions) are documented here.                Tools RequiredYou will need the following items in order to burn an SD card for yourParallella:  Micro-SD card, 16GB or greater.  Desktop or laptop computer with a micro-SD card reader, or an SD-card reader with a micro adapter. These instructions are tailored for a Mac. A Linux or Windows machine will work with minor modifications in the procedure.  High-speed internet connection, for downloading Parallella’s Ubuntuimage and related files.  Micro-USB-to-USB adapter, for the keyboard and mouse. Parallella is equipped with two micro-USB ports.  Micro-HDMI to HDMI cable or adapter.  Parallella (of course!)Adapteva sells an accessories kit containing an SD card, power adapter, micro-HDMI to HDMI cable, and USB-to-micro-USB adapter. Unless you already have these items, buying the kit may save you time.These Steps Could Break Your Primary MachineSince you’re experimenting with Parallella, we can assume that you are an advanced user. Your computer is already backed up, or you’re running these steps on a test machine. And you know the power and pitfalls of sudo. Technology evolves rapidly, and everything you read here could change by the time you read it.Comparison with Raspberry Pi or Beaglebone Black                How does the Parallella compare with other single-board computers, like the Raspberry Pi or Beaglebone Black? The first difference noticed at boot-time: Parallella runs hot! So hot, in fact, that the unit comes with a heat sink and the recommendation to add a fan. I’ve never needed a fan with a Pi or a ‘Bone.Of course, the Parallella runs hotter because it has more processing power packed tightly together in limited space. Since Parallella is designed to run tasks in parallel, we can expect certain programs to perform faster than they would on the Pi or ‘Bone. Future posts will explore Parallella’s performance using languages designed for concurrency, languages like Go and Rubinius. Now, let’s get started with Parallella.Getting the Parallella OSParallella runs a customized version of Ubuntu installed on a micro-SD card. Burning the SD card takes a long time, so it makes sense to start that process first.Download the files that you will need to burn onto the SD card. I’m running Mac OS X on my primary machine, and I’m configuring a Parallella-16 with a Zynq 7010 and an HDMI display. Therefore, the files needed for this configuration are:  Ubuntu 14.04 for Parallella (released June 11, 2014)  Linux kernel with HDMI support  Parallella-16 Zynq 7010 with HDMI display (Thanks Bryan Zake for providing an updated link on 07Mar2017.)Unzip the files and place them in a directory that’s handy. You’ll need them for the next step. With Mac OS X, you can unzip the files by double-clicking them in Finder.Note: You might need different files depending on the current date (Parallella software is in a rapid state of flux) and your exact equipment. If your configuration is different, you can make the adjustments described in Parallella’s official guide.Burn the SD CardInsert your SD card into your Mac’s SD card reader, and use the Mac OS X diskutil list command to determine the designation of the SD card. If you use portable hard drives with your primary machine, the SD card designation could change from time to time, so it’s important to perform this step each time you burn a card.$ diskutil list/dev/disk0   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      GUID_partition_scheme                        *500.3 GB   disk0   1:                        EFI EFI                     209.7 MB   disk0s1   2:                  Apple_HFS MacSSD                  499.4 GB   disk0s2   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3/dev/disk1   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:     FDisk_partition_scheme                       *15.9 GB     disk1   1:               Windows_NTFS Untitled 1             15.9 GB     disk1s1$  From this diskutil report, we can see that we want to burn the SD image to /dev/disk1. The other device is the hard drive for my primary machine. Burning the wrong device means destroying data.To burn the SD card…  Change into the directory where you downloaded the Ubuntu image.  Unmount the destination partition on the SD card.  Use the the dd command to copy the Ubuntu image to the SD card.To execute the above steps as bash commands, do the following:$ cd [directory containing the ubuntu image file]$ diskutil unmountDisk /dev/disk1Unmount of all volumes on disk1 was successful$ sudo dd if=ubuntu-14.04-140611.img of=/dev/disk1 bs=64kPassword:The dd command takes a long time to run, over 56 minutes on my machine. Here’s a quick run-through of the command options:  sudo gives you super powers.  dd is the “copy and convert” command. The letters “dd” have nothing to do with what the tool actually does. It’s just a command name. And like so many things in computer science, the name might be based on a pun.  if= specifies the input file. You can include the full path, or if the file is in your current directory, you can omit the path as shown in this example.  of= specifies the output file. We know that the SD card is located at /dev/disk so that’s where the results of this command are headed.  Note that your destination directory may differ from this one.  bs= specifies the block size used for the destination file.About Block SizeThe Mac section of the official Parallella guide recommends a block size of size of 1 megabyte, while the Linux instructions recommend 64 kilobytes (the option bs=64k in the dd command). I initially used bs=1m on my Mac, and I ran into problems. When I used bs=64k, everything worked fine. Note that I eventually traced my problem to something other than block size (details below) but since the 64k setting still works, I’ve left it intact. If I find out why Linux and OS X are using different block sizes, I’ll post the information here.Checking dd Progress                Waiting an hour for the dd command to run can be disconcerting because the machine does not give any feedback on progress. No gas gauge, spinning indicator, nothing. How do we know if the write process is working?Here’s how to check progress. Run Apple’s Activity Monitor, and look for dd on the list of processes, as shown in the Activity Monitor screenshot. The number of bytes written will increase slowly while dd burns the Ubuntu image onto the SD card. With the current version of Ubuntu, roughly 7.4GB will be written to the SD. At completion, dd will disappear from the Activity Monitor list and you’ll see the following at the command line.$ sudo dd if=ubuntu-14.04-140611.img of=/dev/disk1 bs=64kPassword:121280+0 records in121280+0 records out7948206080 bytes transferred in 3363.824531 secs (2362848 bytes/sec)$ As you can see from the report, it took 3363.824531 seconds (just over 56 minutes) for dd to burn the Ubuntu image onto the SD card. That’s a long time to wait with zero feedback. Activity Monitor will tell you what’s going on.Confirm PartitionsTo confirm that the partitions have been created and that Ubuntu has been written to the SD card, use diskutil list again.$ diskutil list/dev/disk0   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      GUID_partition_scheme                        *500.3 GB   disk0   1:                        EFI EFI                     209.7 MB   disk0s1   2:                  Apple_HFS MacSSD                  499.4 GB   disk0s2   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3/dev/disk1   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:     FDisk_partition_scheme                        *15.9 GB    disk1   1:                 DOS_FAT_32 BOOT                    134.2 MB   disk1s1   2:                      Linux                         7.3 GB     disk1s2$ As expected, /dev/disk0 remains unchanged. We want it that way because that’s where our primary machine’s operating system resides. /dev/disk1 (your actual SD card designation may be different) is the target disk we’re after. Two new partitions are on the SD card, a FAT32 partition named BOOT and a Linux partition.Next we need to copy some supporting files to the new BOOT partition.Copying Additional Files to the SD CardNow that Ubuntu resides on the SD card, it’s time to add the files that support HDMI video and the FPGAs. Here’s how.The additional files will need to be copied to /BOOT on the SD card. While it might make sense to reach the BOOT partition as /dev/disk1, you will actually reach it via /Volumes/BOOT.We target /dev/disk1 when burning the Ubuntu image, but to copy the supporting files we target /Volumes/BOOT. Both designations point to the same place, the SD card. Why the name switch?I don’t know why two different designations are used for the same SD card. I only know that it works. You can expect to see an update posted here if I find an explanation. Or if you have an answer, feel free to post in the comments below.Before we copy over the files, let’s see what’s on the BOOT partition on the SD card.~$ cd /Volumes/BOOT//Volumes/BOOT$ ls -altotal 12drwxrwxrwx@ 1 rth   staff   512 Jul  5 23:44 .drwxrwxrwt@ 4 root  admin   136 Jul  5 23:44 ..drwxrwxrwx  1 rth   staff   512 Jul  5 23:44 .Spotlight-V100drwxrwxrwx@ 1 rth   staff   512 Jul  5 23:44 .Trashes-rwxrwxrwx  1 rth   staff  4096 Jul  5 23:44 ._.Trashesdrwxrwxrwx  1 rth   staff   512 Jul  5 23:44 .fseventsd/Volumes/BOOT$ Gotcha #1: The FPGA Bitstream FileFirst, change into the directory where you stored the additional Parallella files, and copy the FPGA bitstream file to /Volumes/BOOT.$ cp parallella_e16_hdmi_gpiose_7010.bit.bin /Volumes/BOOT/$ cd /Volumes/BOOT/$ mv parallella_e16_hdmi_gpiose_7010.bit.bin parallella.bit.bin$ First gotcha: I made the mistake of simply copying the parallella_e16_hdmi_gpiose_7010.bit.bin file without renaming it to parallella.bit.bin. Parallella will only boot when it sees a file with this filename on the SD card’s BOOT partition. The original file name will probably change as the software gets updated. With each change, we will need to make sure that the file is renamed parallella.bit.bin on the Parallella.Obvious in hindsight, but it took me awhile to track that one down!Copy the Last Two FilesTwo files were decompressed from kernel-hdmi-default.tgz: devicetree.dtb and uImage. Change into the directory where the files were decompressed, and copy them to /Volumes/BOOT.$ cp devicetree.dtb /Volumes/BOOT/$ cp uImage /Volumes/BOOT/$ Here’s what the BOOT partition should look like when you’re done../Volumes/BOOT$ ls -altotal 12853drwxrwxrwx@ 1 rth   staff     1024 Jul  6 12:14 .drwxrwxrwt@ 4 root  admin      136 Jul  6 12:11 ..drwxrwxrwx  1 rth   staff      512 Jul  6 12:11 .Spotlight-V100drwxrwxrwx@ 1 rth   staff      512 Jul  6 12:11 .Trashes-rwxrwxrwx  1 rth   staff     4096 Jul  6 12:11 ._.Trashes-rwxrwxrwx  1 rth   staff     4096 Jul  6 12:13 ._devicetree.dtb-rwxrwxrwx  1 rth   staff     4096 Jul  6 12:14 ._parallella.bit.bin-rwxrwxrwx  1 rth   staff     4096 Jul  6 12:13 ._uImagedrwxrwxrwx  1 rth   staff      512 Jul  6 12:11 .fseventsd-rwxrwxrwx@ 1 rth   staff     8607 Jul  6 12:13 devicetree.dtb-rwxrwxrwx@ 1 rth   staff  2083744 Jul  6 12:14 parallella.bit.bin-rwxrwxrwx@ 1 rth   staff  4468792 Jul  6 12:13 uImage/Volumes/BOOT$                 Eject the SD Card, Insert in ParallellaNow you’re ready to eject the SD card from the Mac and insert it in the Parallella. Plug in the HDMI cable, keyboard, mouse, and Ethernet connection. Power up the Parallella, and welcome to the next gotcha.Gotcha #2: Powered USB RequiredParallella booted to a beautiful GUI, but the system would not respond to the keyboard or mouse. After swapping a few keyboard/mouse combinations, I finally tried a powered USB hub. The powered hub worked.Through trial and error I learned that the Parallella can handle a single keyboard plugged into the micro-USB port. However, if two devices are plugged in via USB, a powered hub is required. A passive USB hub will not work. A combination keyboard, one with both a keyboard and a trackpad, will also need a powered USB hub.Default Login CredentialsDefault login credentials for Parallella are…  username = linaro  password = linaroSSH, Vim, Git, etc.You can SSH into the Parallella from the network…~$ ssh linaro@192.168.11.133linaro@192.168.11.133&#39;s password:Welcome to Linaro 14.04 (GNU/Linux 3.12.0-g0bc9c3a-dirty armv7l) * Documentation:  https://wiki.linaro.org/Last login: Sun Jul  6 17:34:17 2014 from wisdomgroup-mbp13linaro-nano:~&amp;gt; … Vim is operational…linaro-nano:~&amp;gt; which vim/usr/bin/vimlinaro-nano:~&amp;gt; vim --versionVIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan  2 2014 19:49:14)linaro-nano:~&amp;gt; … and Git works fine.linaro-nano:~&amp;gt; which git/usr/bin/gitlinaro-nano:~&amp;gt; git --versiongit version 1.9.1linaro-nano:~&amp;gt;Scrot for ScreenshotsIf you want to take a screenshot of the Parallella display, use scrot. It comes with the Ubuntu installation. Type scrot at the command line and hit enter. Five seconds later, the entire screen will be captured and stored in a file called [time stamp]_1920x1080_scrot.png in the current directory.ConclusionAfter waiting a year for Parallella to arrive, I’m excited to have the device up and running. Future posts will explore the “why?” behind parallel computing. Thanks Adapteva for helping to democratize supercomputing. Awesome times are ahead!",
      "url": " /blog/2014/07/07/parallella-quick-start-guide-with-gotchas/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-06-30-node-dot-js-prep-for-openrov": {
      "title": "Node.js Prep for OpenROV",
      "content"	 : "                OpenROV is an underwater robot controlled through a web browser. The server-side of the web app is written in Node.js, running on a BeagleBone Black inside the OpenROV.You don’t need to know Node.js in order to pilot an OpenROV. And you don’t need to do anything in this article to construct an OpenROV from a kit. But if you’re the kind of maker who likes to dig deep into a project, you might enjoy exploring Node.js.Mac OS X and Node.jsEverything written here applies to Node.js as it runs on Mac OS X. If your local machine runs Linux or Windows, you will need to consult other resources in order to run Node locally.Homebrew FirstMake sure you’re running Homebrew on your Mac. Homebrew is a seamless way to manage packages on Mac OS X. To install Homebrew…$ ruby -e &quot;$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)&quot;installAfter installation, confirm that Homebrew is running properly…$ brew doctorInstalling Node.jsNow that Homebrew is installed and running, Node.js can be installed with a single line command.$ brew install nodeTo confirm that Node.js is installed on your system and to check the version number…$  which node/usr/local/bin/node$ node --versionv0.10.26$ Hello World in Node.jsYou know the compter science tradition: The first program in any new language has to say “Hello World.” Here’s a sample Hello World program from the official Node.js web site, slightly modified to suit OpenROV.First, create a file called helloworld.js and fill it with the following code.// Sample web server from http://nodejs.org, slightly modified.var http = require(&#39;http&#39;);http.createServer(function (req, res) {  res.writeHead(200, {&#39;Content-Type&#39;: &#39;text/plain&#39;});  res.end(&#39;Hello World. OpenROV runs Node.js!&#39;);}).listen(1337, &#39;127.0.0.1&#39;);console.log(&#39;Server running at http://127.0.0.1:1337/&#39;);Next, from the same directory where you saved helloworld.js, run the file from the command line like so…$ node helloworld.jsServer running at http://127.0.0.1:1337/$ Finally, open up a web browser on your local machine and navigate to http://127.0.0.1:1337. You should see a bare-bones web page similar to this one.                Now that you have Node.js running locally, you’re ready to explore the OpenROV repo on GitHub.Next StepsFuture blog posts about Node.js and OpenROV will consider questions like:      What does Node.js do for OpenROV that other languages can’t do?        What other languages might we use to control OpenROV? It’s all open source, so our brainstorms could one day turn into actual code running on OpenROV!        How does Node.js on the BeagleBone Black interact with the Arduino and other OpenROV components?  Keep exploring!",
      "url": " /blog/2014/06/30/node-dot-js-prep-for-openrov/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-06-28-get-back-to-making-things": {
      "title": "Get Back to Making Things",
      "content"	 : "  You know what the trouble is? We used to make things in this country, build things. Now we just put our hand in the next guy’s pocket.~Frank Sobatka                David Lang is a maker. After a stint with a struggling Silicon Valley startup, David teamed up with former NASA engineer Eric Stackpole to build an underwater robot called OpenROV. That’s a two-sentence oversimplification of David’s maker journey, detailed in his book: Zero to Maker: Learn (Just Enough) to Make (Just About) Anything.The book starts off like a novel, with the exploration of the mysterious Hall City Cave and an 1840s-era gold robbery. Fast-forward to the present day where a multi-disciplinary team of makers joins forces to create an inexpensive vehicle for underwater exploration.The author was not a born maker. But through force of will, discipline, and the right mentorship, he grew from non-maker to co-founder of the OpenROV company in roughly one year.Making is a Team SportZero to Maker will not teach you how to use tools, what to make, or what manuals to read. But it will put you on the path to learning. For example, the author shares his first experience at a Maker Faire, a gathering for people who make things. Many of the exhibitors have spent decades honing their skills, while some are brand new and full of enthusiasm. Everyone shares knowledge in the Maker community. And as a result, everyone grows.Maker Spaces are places where tools and expertise are shared on a regular basis. Noisebridge is a maker space in San Francisco where the author got some of his early experience with specialized tools. Pumping Station One and Southside Hackerspace Chicago shoot for similar goals in Chicago.The author points out that no matter what you’re trying to make, chances are that someone else has made something similar and they can share experience with you. Likewise, you have experience that other makers may find valuable, even on day one of your maker journey. Sometimes we don’t know what we know. Maker communities remove the friction so that knowledge can be shared more freely.The IKEA EffectWhy is the maker movement so powerful? The author explores this question in one very interesting section of the book. As it turns out, Researchers at the Harvard Business School think they have the answer. When we put our sweat and effort into building a project, we perceive the project to be more valuable. The researchers refer to this phenomenon as the IKEA effect. If we sweat to build something, it becomes valuable to us.RecommendationIf you are a maker, or if you want to become a maker, this book is worth reading. And once you’re done reading, go make something!Note: A version of this article is also posted at http://www.chicagoruby.org/book-reviews/.",
      "url": " /blog/2014/06/28/get-back-to-making-things/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-06-27-internet-of-things-at-acm": {
      "title": "Internet of Things at ACM",
      "content"	 : "How many motors are in the typical automobile? The knee-jerk response might be “one, the big metal thing under the hood”. Upon further reflection, we may recall the motors that operate many devices in today’s automobile: windshield wipers, power windows, door locks, sun roof, reclining seats, and so on. Power devices were once luxury equipment. Today, since motors have fallen in price, most cars include these luxury items as standard equipment.We take motors for granted, therefore motors have disappeared. And now, as it becomes possible to add a computer and an IP address to almost anything electronic, we bring about the Internet of Things (IoT). Computers are disappearing too.ACM Presents Disruptive IoTSteven Loving is a director at Arrayent. Arrayent makes a platform for companies that want their products to be IoT-aware. For example, a garage door company that wants to offer iPhone control to their customers can do so without re-inventing TCP/IP themselves. Arrayent handles the IoT portion so the maker can focus on their core business. Steven shared his vision of the IoT future at Tuesday’s ACM meeting. Some of his ideas are summarized here.Don’t Leave Home Without ItDon’t leave home without it was once the catch phrase of a major charge card. Today, many of us leave home with just three things in our pockets:  Wallet  Keys  SmartphoneAs near-field communication (or one of its descendants) becomes prevalent, we may only need the smartphone.Products Don’t Matter Any More?Products don’t matter any more? I immediately wanted to argue against this idea. Everyone wants quality products, right? The point: As manufacturing techniques become common knowledge, companies need to come up with new ways to differentiate themselves from the competition.Connected products are special. For example, consider an ordinary sump pump. How does a buyer distinguish one from another? If one sump pump contains a tiny embedded Linux system with an IP address, it can alert the owner when water has approached a dangerous level, if there is a power outage, or if flood conditions are simply too strong for the pump to handle. Bad news does not get better with time, and if the sump pump can send bad news early, the owners can take corrective action while there’s still time to do so.Mobile FirstA great quote from the presentation…  Do you know anybody building a product with an LCD on it? Shoot them.  I have an LCD in my pocket. It’s called a phone.~Steven LovingIn other words, the mobile-first strategy that many developers apply to apps also applies to IoT.Side note: Clearly, Apple gets it. That’s one reason why they released HomeKit.Incumbent Companies Are ScramblingWhy are cable companies offering security services in addition to standard packages of television and movies? Because users are moving to Netflix and Amazon Prime. Cable companies that offer internet service must come up with other services if they expect to survive. IoT might offer a way. Self-installed home monitoring services will give customers a reason to stick with their old cable provider. Of course, this will force security companies like ADT to come up with something new, too.IoT ProgressionWhat opportunities will become available when every device has an IPaddress? Tuesday’s presenter predicts the following sequence ofevents:  Connected products.  Connected systems - products talking to other products.  Communities of systems talking to each other.  Network effects.We’re currently experiencing #1 and #2. What will happen as #3 and #4 begin to roll out? We cannot be sure. However, we can be certain that this will be an exciting time for software developers, electrical engineers, and entrepreneurs who build companies in those areas.Thanks Chicago ACMThanks again Chicago ACM for putting on a great program.",
      "url": " /blog/2014/06/27/internet-of-things-at-acm/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-06-16-citizen-science-with-openrov": {
      "title": "Citizen Science With OpenROV",
      "content"	 : "  In the early days of robots people said, ‘Oh, let’s build a robot’ and what’s the first thought? You make a robot look like a human and do human things. That’s so 1950s. We are so past that.  ~Neil deGrasse TysonOpenROV is an underwater robot, roughly the size of a toaster, and definitely not human-shaped. The device is controlled through a Node.js-based web app. Former NASA researcher Eric Stackpole and Make Magazine columnist David Lang are on a mission to democratize ocean exploration in the same way that Jobs and Woz sparked the democratization of  computing. Eric and David pooled their talents to launch OpenROV, building on the foundation laid by Moore’s Law and the open source software movement.OpenROV’s ingredients are an impressive mix of open source goodness…                  BeagleBone Black - an open-source single-board computer, smaller than a deck of cards, running Linux.  Linux - specifically, the Ubuntu distribution.  Node.js - platform for building web applications, based on Google’s V8 JavaScript engine. Thanks to Node.js, any laptop running a web browser can control the OpenROV.  Arduino - inexpensive micro-controller commonly used in robotics projects.  TCP/IP - the communication protocol of the Internet. TCP/IP handles all communications (commands, video) between the OpenROV and the pilot’s laptop.The OpenROV team has released all of their schematics and source code to the open source community, hence the word “open” in the company name. If you think the open source aspects of OpenROV are exciting, wait until you hear about the company’s main mission: Underwater exploration.Eric and David were kind enough to invite me to their lab/manufacturing facility in Berkeley, California recently. Thank you, OpenROV makers!Remotely Operated Vehicles                ROV is short for remotely operated vehicle, an underwater robot. Scientists use ROVs to study marine life. Oil companies use ROVs for underwater construction and inspections. Industry-grade ROVs are priced at $30,000 on the low-end, while a custom ROV can cost several million dollars.The OpenROV team was convinced that they could design and build an ROV small enough to fit in a suitcase, and easy enough for a citizen scientist to assemble and maintain. Targeting the general public meant achieving a relatively low price point: under one thousand dollars ($1,000.00).They did it. The device is successful, and you can buy an OpenROV kit today for $849.00.Movements are controlled via a USB-connected video game controller. A Bluetooth-equipped controller should work just as well. Some users will prefer the laptop keyboard; that works too.In other words, the computer that you’re using to read this article can probably control the OpenROV.Citizen ScienceOur world will always need professional scientists, people working in academia and in industry to push the frontier of knowledge. Some scientific problems require the attention of PhD-level professionals, while other problems are better solved through crowdsourcing. Enter the citizen scientist.Professional scientists are good at analyzing data, because that’s what they have trained themselves to do. But data gathering requires less training than analysis. Citizen science and crowdsourcing work when there’s an overwhelming volume of data to gather. Or when the breakthrough is beyond the reach of current scientific knowledge.Citizen scientists may be constrained by money, but they tend to be unconstrained by expertise. Therefore they are likely to try solutions that experts would never consider. Orville and Wilbur Wright were citizen scientists. Professional scientists pursued solutions for fixed-wing flight prior to the Wright brothers’ success. But since the flight problem defied the known science of the day, new approaches were required.Amusingly, successful citizen scientists can be outwitted by their own expertise, just like the professionals. For example…  No flying machine will ever fly from New York to Paris …[because] no known motor can run at the requisite speed for four days without stopping.~Orville WrightShifting back to the 21st century: Thousands of citizen scientists are using OpenROV to explore oceans and lakes more thoroughly than ever before.Open Source On-Site                On the day I visited the OpenROV factory, other underwater enthusiasts were on-site, working with company engineers on product improvements. One enthusiast is a professional pilot of manned submersibles, underwater vehicles large enough to hold people. This pilot has traveled as deep as 2,000 meters below the ocean’s surface! “We’re always looking at amperage”, she said in a discussion with another enthusiast. A spike in amperage could indicate a ground fault, and batteries drain rapidly when that happens. You do not want to be stuck underwater when the batteries run out.Another member of the open source community, an engineering veteran with decades of experience at Apple and Oracle, translates the operator’s feedback into code that might drive the next OpenROV user interface.That’s how open source works at OpenROV.Hardware Testing                I offered to leave when the OpenROV team prepared to test some new components. After working in tech for decades, I’ve learned to respect a company’s right to protect secrets.“You forget that this is all open source,” they told me. “The schematics are already online, so there’s nothing to hide. Come and watch the test.”Yes, they had to remind me about the real meaning of open source!Four OpenROV makers gathered around a tank of water to test a new motor, controller, and propeller combination. They measured power utilization, propulsion, and temperature. Power utilization is important because the batteries need to last. Temperature matters because we don’t want the OpenROV to melt underwater (or fry the fish). And propulsion matters because if the unit can’t move, what’s the point?From the reaction of the team, it looks like they found some good components for the next batch of OpenROV kits.Strong Minds Coming TogetherThe mood in the OpenROV lab is a blend of excitement and technical expertise. Some of the people in the lab are members of the company. Others are adventurers fascinated with this inexpensive, effective way to explore. All are united in the quest to do something awesome with technology.OpenROV is what we get when the thirst for exploration blends with the open source movement. What a wonderful combination.",
      "url": " /blog/2014/06/16/citizen-science-with-openrov/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-05-31-github-page-build-warning-new-cdn": {
      "title": "GitHub Page Build Warning - New CDN",
      "content"	 : "The RayHightower.com blog is built on Octopress and hosted on GitHub Pages. Recently, after I deployed a site update, GitHub emailed me a Page build warning message. Since this was just a warning, I ignored it while I attacked more pressing tasks (not always a good idea).Today I finally took the time to research the topic so I could figure out what to do next. This article is the result of that research.##What the Message MeansHere are the important points of the of the Page build warning message:  GitHub introduced a content delivery network (CDN) for faster page loads and protection against denial of sevice (DOS) attacks.  If you do nothing to your GitHub Pages site, your pages will continue to load normally. People who visit your site will see no difference.  If you want the benefits of the CDN, follow the instructions given in GitHub’s blog articles.The Original MessageHere’s the original message. If you’re satisfied with the above translation, you can skip this section.  The page build completed successfully, but returned the following warning:  GitHub Pages recently underwent some improvements (https://github.com/blog/1715-faster-more-awesome-github-pages) to make your site faster and more awesome, but we’ve noticed that rayhightower.com isn’t properly configured to take advantage of these new features. While your site will continue to work just fine, updating your domain’s configuration offers some additional speed and performance benefits. Instructions on updating your site’s IP address can be found at https://help.github.com/articles/setting-up-a-custom-domain-with-github-pages#step-2-configure-dns-records, and of course, you can always get in touch with a human at support@github.com. For the more technical minded folks who want to skip the help docs: your site’s DNS records are pointed to a deprecated IP address.  For information on troubleshooting Jekyll see:  https://help.github.com/articles/using-jekyll-with-pages#troubleshooting  If you have any questions please contact us at https://github.com/contact.First: Check the CNAME FileSince RayHightower.com was configured for Octopress a few years ago, it already had a source/CNAME file. To check the contents:$ cat source/CNAMErayhightower.com$ The CNAME file looks fine, according to the GitHub’s blog. Time for the next step.Next: Domain RecordsThe domain is registered with DNSimple, so the process was relatively quick.  Go into DNSimple’s advanced editor for the domain.  Click Add a Record and select ALIAS.  Leave Name blank.  Next to Alias for enter the GitHub Pages endpoint. In my case, the endpoint is rayhightower.github.io.More information on GitHub Pages and DNSimple.I set TTL to 1 minute to encourage the changes to propagate quickly. If you know of a better configuration choice for TTL, please let me know in the comments below.Expect Propagation DelaysDNS changes can take up to a day to propagate. Delays tend to be shorter with DNSimple because time-to-live (TTL) can be set as low as one minute for some records. Updates will be posted here as I learn more.",
      "url": " /blog/2014/05/31/github-page-build-warning-new-cdn/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-05-30-how-to-grow-a-user-group": {
      "title": "How to Grow a User Group",
      "content"	 : "The current team of ChicagoRuby organizers assumed leadership in August 2007. Back then, typical monthly attendance was about five people and the group’s Meetup.com database contained 78 members. The previous organizer was swamped with work at his day job, so he handed the baton to a new crew.Today, the new crew has grown ChicagoRuby to over 2,700 members. The group hosts three meetups every month, and the downtown meetings consistently max out the 100-person RSVP limit. Bonus: ChicagoRuby hosts two conferences, WindyCityRails in Chicago and RubyCaribe on the Caribbean island of Barbados.How does ChicagoRuby do it? Through consistency, teamwork, iteration, and learning from mistakes.Be Consistent With MeetingsConsistency is very difficult in the beginning, especially on that night when only three people show up for the meeting. I have hosted a 3-person ChicagoRuby meeting before. Consistency is hard, and it is also the most important factor in user group success.People trust consistency. Consistent meetings grow groups.Members of ChicagoRuby know that we meet on the first Tuesday of every month downtown, the third Saturday of every month in Elmhurst, and one evening per month for the hack night. Members can plan their schedules months in advance because the ChicagoRuby calendar is consistent. Consistency builds trust.ChicagoRuby cancelled one meeting in January 2011 due to a killer snow storm in Chicago. We were forced to cancel because the property manager shut the entire building down. We’re a little bit stubborn about consistency. And that’s how we build trust.Yes, there will be times when the organizer is too exhausted to run an upcoming meeting. That’s why it’s important to share the work by building a team.Build the TeamChicagoRuby believes in sharing the work amongst multiple organizers. The group is stronger with several brains at the helm. Today we have eight organizers. Working as a team enables us to benefit from each other’s strengths. Some organizers have strong design skills, others are strong developers. And some are good at asking members for help.Ask for Help  I guarantee you that any favor he asks of you, you will offer to do before he requests it.~Tom Hagen, ConsigliereOne way to ask for help: Encourage members to help in their area of enthusiasm. For example, organizer Ginny Hendry runs the ChicagoRuby hack nights every month. Ginny got started when she approached the organizers after a meeting and said, “We should have hack nights.” Clearly, she was enthused about hack nights, so we asked her to take the lead in that area.Today, Ginny’s hack nights are the highest rated of all ChicagoRuby events. In January, she will be a lab advisor at RubyCaribe.Before he moved to Florida, Matt Polito was part of the ChicagoRuby organizer team. Matt wanted ChicagoRuby to have a logo. I was against it. We were planning the first WindyCityRails and I wanted everyone to focus on the conference. Matt went out and got the logo done anyway. Everybody likes it. Matt, thank you for ignoring me!Members who have ideas for improvement tend to be strong leaders. The whole group benefits when we get out of the way and let them lead.The current members of the ChicagoRuby organizer team are:  Ginny Hendry, mentioned above.  Justin Love is a developer and an organizer of the Chicago JavaScript Meetup Group (JS-Chi). Justin will also be a lab advisor for RubyCaribe in January 2015.  Hugo Corbucci, Emily Rosengren, and Sam Jacobs are developers at ThoughtWorks. Since ThoughtWorkers travel often, ChicagoRuby always invites two or more to be on the organizer team.  Alonda McCree manages the downtown meetups, including logistics and video. Alonda is the conference manager for RubyCaribe.  Marty Lavin manages ChicagoRuby’s Elmhurst meetups, including logistics and scheduling. Marty is consistently active in Elmhurst, so we asked him to join the team.  Ray Hightower, author of thisarticle.In addition to the core group of ChicagoRuby organizers, one person deserves special mention. Kevin Zolkiewicz has managed every WindyCityRails since the first one in 2008. Kevin’s project management, design, and leadership skills are enjoyed by everyone who attends WindyCityRails.The ChicagoRuby Organizer Page contains the list of current and past organizers. Many of the former organizers remain active in an emeritus role. Every mind helps to make the group stronger.Automate EverythingManaging a database of 2,700+ members could be drudgery. Fortunately, Meetup.com makes the process easy. Meetup handles RSVPs, membership additions and deletions, and reminders. Sometimes, the 2-week automated reminder from Meetup.com reminds the organizers to get a speaker for the next meeting!Early in our history, someone suggested that ChicagoRuby should not use Meetup.com because it’s written in PHP, and we’re a Ruby group. We see things differently. ChicagoRuby is a Ruby group that uses the best tool for the job, regardless of language. Meetup.com has proven itself useful for eight years and counting.Choose a Short NameGrowth is an ongoing priority for ChicagoRuby. In order to grow, a group has to attract new members. New members who are looking for a group to join are likely to start with a search engine, and search engines adore simplicity.Our group was originally called The Chicago Area Ruby on Rails Meetup Group. Accurate, and a mouthful. We discovered that a simple domain name, ChicagoRuby.org, was available. So we grabbed it, along with the @ChicagoRuby Twitter handle.Be Easy to FindTo make the group even easier to find, every web site in the ChicagoRuby ecosystem points to all of the group’s other web sites. For example, all of the conference sites point to the ChicagoRuby site, and vice versa. A new member who finds one part of the ecosystem will find the whole thing. People feel welcome when information is easy to find.Making future members feel welcome is key to growth. Free monthly events are another way to make people feel welcome.Keep Monthly Events FreeI firmly believe that monthly user group meetings should be free. We never know what a member of our community is going through financially. Therefore, ChicagoRuby’s monthly meetings have always been free.My personal history includes times when I was dead broke due to one entrepreneurial setback or another. So I have emotional reasons for keeping ChicagoRuby’s monthly events free of charge.Of course, the money to pay for the meetings has to come from somewhere. That’s where sponsors can help.Cover Monthly Costs Through SponsorshipsCompanies will gladly sponsor a group that gives them a return on their investment. Sponsorships don’t always come in the form of money.For example, ChicagoRuby’s first sponsor was DeForest Group. Owners Lee DeForest and Jim DeForest provide ChicagoRuby with free space and WiFi for our Saturday meetings. Lee was one of the five people in the room when the current organizers took over, and we will always be grateful for his early support.ChicagoRuby’s downtown sponsors are Enova and ThoughtWorks. Each company provides space, WiFi, pizza, and beverages on a monthly basis. Sponsors get to address the group at the beginning of the meeting. More important, by sponsoring ChicagoRuby over time, a company can build trust within the membership.O’Reilly Media was our first publishing sponsor.  O’Reilly, Pearson Education, and The Pragmatic Programmers provide books for ChicagoRuby members to review.Sponsors get involved with user groups for two main reasons: To recruit developers, or to market products to developers. Everybody wins when sponsors get involved with user groups, financially or otherwise.Vet SpeakersMembers of ChicagoRuby trust the organizers to deliver quality events every month. I dropped the ball one month when I failed to properly vet a speaker. After that meeting, organizer Dave Giunta wrote the first draft of the ChicagoRuby speaker guidelines. We’ve word-smithed the guidelines over the years, but the most important parts were created by Dave.Make Members Feel AwesomeWe humans have a need to belong to something. The feeling of belonging (awesomeness) can be strengthened when we go out for drinks after an event. Drinks are not necessarily alcohol; when we go to a bar together, some members will have a soda, juice, or coffee. Informal camaraderie makes members feel like members.ChicagoRuby members gather together at a bar for an hour or so after our downtown meetings. In Elmhurst, the meetings end at noon, so we grab lunch together at a local restaurant. The conversation continues, and bonds are formed.Maintain Focus, and Explore New AreasFocus can lead to excellence. But if our focus is too tight, we might miss the Next Great Thing. How does a group balance between focus and exploration?Over the years, ChicagoRuby has struggled with focus. We’ve experimented with other ventures. We ran a job board for awhile. We ran conferences related to NoSQL and mobile. We moved away from these because they drained our resources, and pulled us away from our core, which is Ruby.Here’s how we balance between focus and exploration. The monthly user group meetings are for exploration. Monthly events take minimal resources, so they’re ideal for experiments. For example, Polyglot Night in Jan 2014 was very successful. Monthly meetings might explore NoSQL, mobile, or IoT. The Ruby community remains vibrant because we borrow ideas from other communities.Our conferences focus on Ruby. Conferences require more planning and resources than monthly meetups. So, to maximize efficiency, we build our conferences around our core strength: Ruby. RubyCaribe is the newest example of this focused approach.Collaborate With Other GroupsCollaboration stretches our brains in unexpected and wonderful ways. For our newest ventures, ChicagoRuby is collaborating with developers in the Caribbean, in the island nation of Barbados.  LinuxBarbados is a monthly user group for open source enthusiasts.  RubyCaribe is a brand new conference for intermediate and advanced Ruby developers.Through the new ventures, ChicagoRuby has been introduced to work done by the University of the West Indies at Cave Hill (UWI).Dr. Colin Depradine, Dean of the University’s Faculty of Science and Technology, is growing the next generation of scientists and engineers in the Caribbean. Under Dr. Depradine’s leadership, UWI encourages collaboration between the sciences. For example, computer scientists are writing software to crunch data related to solar energy research. Looking even further into the future, the UWI team has introduced children as young as eight to programming.UWI also serves as host to LinuxBarbados. The group is organized by Maurice Beckles, a Barbados-based open source enthusiast and IT technician at UWI. If you’re in Barbados, be sure to ask him about his sink-or-swim introduction to Linux when he worked at a bank!Notice the pattern: The conference (RubyCaribe) focuses on ChicagoRuby’s core strength, Ruby. The monthly user group, LinuxBarbados, is a vehicle for exploring a wide range of topics including Linux, Ruby, embedded devices, and anything related to open source.ConclusionA better title for this post might have been One Way to Grow a User Group. Every group will grow differently depending on its particular strengths and interests. Of course, groups that grow are likely to have a few things in common. When a group is built on the pillars of consistency and teamwork, they are likely to succeed in a big way.",
      "url": " /blog/2014/05/30/how-to-grow-a-user-group/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-05-30-upgrading-to-git-2-dot-0": {
      "title": "Upgrading to Git 2.0",
      "content"	 : "Developers of Git are making a serious effort to improve intuitiveness for first-time users. Of course, all users benefit from intuitive tools. When our tools just work, we spend less time sifting through documentation and more time solving problems for our customers.How to UpgradeIf you’re on Mac OS X, make sure you’re using Homebrew. It’s the easiest way to install and manage Unix libraries on the Mac.It’s usually a good idea to check your current version before upgrading.$ git --versiongit version 1.9.2$ Next, make sure that Homebrew is current.$ brew doctorWarning: Your Homebrew is outdated.You haven&#39;t updated for at least 24 hours, this is a long time in brewland!To update Homebrew, run `brew update`.$ My Homebrew was outdated, so I used brew update to grab the new packages.$ brew updateUpdated Homebrew from b46160b8 to afff2b23.==&amp;gt; New Formulaeaces_container                    git-number                      picolispapache-spark                    homebrew/versions/mongodb24       probatron4j...$ Next, use Homebrew to upgrade Git.$ brew upgrade git==&amp;gt; Upgrading 1 outdated package, with result:git 2.0.0==&amp;gt; Upgrading git==&amp;gt; Downloading https://downloads.sf.net/project/machomebrew/Bottles/git-2.0.0.mavericks.bottle.tar.gz######################################################################## 100.0%==&amp;gt; Pouring git-2.0.0.mavericks.bottle.tar.gz==&amp;gt; CaveatsThe OS X keychain credential helper has been installed to:  /usr/local/bin/git-credential-osxkeychainThe &#39;contrib&#39; directory has been installed to:  /usr/local/share/git-core/contribBash completion has been installed to:  /usr/local/etc/bash_completion.dzsh completion has been installed to:  /usr/local/share/zsh/site-functions==&amp;gt; Summary🍺  /usr/local/Cellar/git/2.0.0: 1324 files, 31M$ Finished. Let’s check the Git version to confirm that the upgrade went properly.$ git --versiongit version 2.0.0$ Future articles will examine the this latest version of Git in detail. For now, enjoy!",
      "url": " /blog/2014/05/30/upgrading-to-git-2-dot-0/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-05-28-an-environment-of-respect-3rd-iteration": {
      "title": "An Environment of Respect, 3rd Iteration",
      "content"	 : "Last week, Coraline Ehmke and Liz Abinante met with three members of the WindyCityRails organizer team: Kevin Zolkiewicz, Alonda McCree, and me. Good dialog. End result: The updated WindyCityRails Code of Conduct.Harassment is a serious issue, and a 140-character tweet will not do the discussion justice. Therefore, the ChicagoRuby organizers have created multiple communication channels for this issue:  Email: codeofconduct@chicagoruby.org  Any of the contact names listed on the current code of conduct  Phone number listed on the code of conductIf you have concerns in this area, please feel free to use one of the channels. The contact list may change as responsibilities shift within ChicagoRuby. However, there will always be multiple people available to address harassment concerns.Thank you Coraline and Liz for your work in making this happen. And thank you Ken Walters of Brad’s Deals for facilitating the meeting.History (updated 31Dec2015)For a brief history of how this issue evolved, take a look at…  An Environment of Respect  An Environment of Respect, 2nd Iteration  An Environment of Respect, 3rd Iteration (this article)Next StepsNow, let’s go write some code!",
      "url": " /blog/2014/05/28/an-environment-of-respect-3rd-iteration/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-04-15-managing-dotfiles": {
      "title": "Managing Dotfiles",
      "content"	 : "Dotfiles, the configuration files used by Unix-like machines, can become disorganized over time. Entropy rules! This article describes my recent attempt to bring order to dotfile chaos. The steps can be summarized as follows:  Move the non-private dotfiles (dotfiles that will be viewed by others on Github) into a directory called ~/.dotfiles.  From the home directory, create a symbolic link to each dotfile in the ~/.dotfiles directory.  Use Git to manage the ~/.dotfiles directory, and share it on GitHub.Dotfiles are normally hidden when you try to view them in the Mac OS X Finder. To view them from the command prompt, use $ ls -al.~/.dotfiles[master]$ ls -altotal 40drwxr-xr-x   8 rth  staff   272 Apr 14 01:44 .drwxr-xr-x+ 71 rth  staff  2414 Apr 14 02:12 ..-rwxr-xr-x   1 rth  staff  3455 Apr 13 16:01 .bash_profiledrwxr-xr-x  14 rth  staff   476 Apr 14 02:25 .git-rw-r--r--   1 rth  staff  1649 Apr 13 16:44 .gitk-rw-r--r--   1 rth  staff  1760 Apr 13 16:10 .irbrc-rw-r--r--   1 rth  staff   118 Aug 22  2013 .zprofile-rw-r--r--   1 rth  staff   375 Apr 14 01:44 README.mdown~/.dotfiles[master]$ The .bash_profile in this example has grown to include aliases, path specifications, and a script that shows the current Git branch as part of the command prompt. The file also contains two aliases useful for showing or hiding dotfiles in the Finder: showdots and hidedots.Putting Dotfiles in One DirectoryDotfiles are normally created in the user’s home directory. For organization purposes, I moved my non-private dotfiles into a directory called .dotfiles, listed above. Unix makes this easy. First, move to the home directory and create ~/.dotfiles.~$ cd ~~$ mkdir .dotfiles~$ Note: Dotfiles can sometimes include private information. If you don’t want to share information in a particular dotfile, don’t put it on GitHub!In this example, we’ll only move one file, .bash_profile.~$ cd .dotfiles/$ mv ../.bash_profile .$ Symbolic LinksSymbolic links ensure that executables can find our dotfiles as needed.$ cd ~$ ln -s ~/.dotfiles/.bash_profile$ ls -altotal 8drwxr-xr-x   3 rth  staff   102 Apr 14 19:48 .drwxr-xr-x+ 73 rth  staff  2482 Apr 14 19:47 ..lrwxr-xr-x   1 rth  staff    34 Apr 14 19:48 .bash_profile -&amp;gt; /Users/rth/.dotfiles/.bash_profile$ In the above example, we created a symbolic link called .bash_profile to the real ~/.dotfiles/.bash_profile located in the .dotfiles directory. That way, any program that’s looking for the .bash_profile file in the home directory will find what it needs, even though the file is somewhere else.Why Use Git to Manage Dotfiles?Git is a great tool for managing files that change over time. Dotfiles can change as we install new software or tweak our development environment. If we make a mistake, or if an installation script makes a mistake, we can use Git to roll back in history to a pre-mistake version of the dotfile.Don’t Make All Dotfiles PublicThere are some dotfiles that you don’t want to share publicly. For example, .bash_history contains all of the commands that have been executed in the shell. Do you really want the world that you sometimes $ ssh myuserid@[embarassingdomainname].com? Probably not. If you think that a dotfile might contain personal or confidential information, no need to broadcast it.Learning More About DotfilesMost of my dotfiles, like .bash_profile, don’t contain anything private. In fact, most of what I know about dotfiles has come from other developers via books, user groups, blogs, and spelunking through GitHub. Dotfile collections by Hashrocket and Thoughtbot are  especially good. My ~/.dotfiles directory is available for public viewing on GitHub.If you’re doing something especially cool with your dotfiles, let’s hear about it!",
      "url": " /blog/2014/04/15/managing-dotfiles/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-04-12-recursion-and-memoization": {
      "title": "Recursion and Memoization",
      "content"	 : "  To iterate is human, to recurse divine. ~ L. Peter DeutschRecursion is available in many high-level languages, including Ruby. Recursive solutions can be joyfully elegant. At the same time, the pursuit of elegance can lead to unexpected performance pitfalls.Fortunately, we can use optimization techniques to address performance problems before they occur. Memoization is one technique in our arsenal.Before MemoizationMemoization was designed to solve a particular kind of problem. Consider a method called fibo(n) that calculates the nth number of the Fibonacci sequence.# Calculate the nth Fibonacci number, f(n).def fibo (n)  if n &amp;lt;= 1    return n  else    value = fibo(n-1) + fibo(n-2)    return value  endend# Display the Fibonacci sequence.(1..40).each do |number|  puts &quot;fibo(#{number}) = #{fibo(number)}&quot;endThe example runs, but performance slows down as n gets larger. Why? Because this method re-calculates all preceeding Fibonacci numbers every time it calculates a new fibo(n). When we calculate Fibonacci numbers manually, we know better. Humans are smart enough to refer to earlier work. But the fibo(n) method does not manage time very well.Is it possible for the fibo(n) method to remember the results of earlier calculations so that it can avoid doing work that is already done? Yes, through memoization.MemoizationMemoization means recording the results of earlier calculations so that we don’t have to repeat the calculations later. If our code depends on the results of earlier calculations, and if the same calculations are performed over-and-over again, then it makes sense to store interim results (jot results down on a ‘memo’ = memoization) so that we can avoid repeating the math.The Fibonacci example can be improved through memoization as follows.  Create a place to store temporary results.  Before performing a calculation, find out if the calculation hasalready been done. If so, use the stored result.  If this is our first time calculating a particular fibo(n), storethe results for future use.Here’s how memoization is implemented in the Fibonacci example:# Fibonacci numbers WITH memoization.# Initialize the memoization array.@scratchpad = []@max_fibo_size = 50(1..@max_fibo_size).each do |i|  @scratchpad[i] = :notcalculatedend# Calculate the nth Fibonacci number, f(n).def fibo (n)  if n &amp;gt; @max_fibo_size    return &quot;n must be #{@max_fibo_size} or less.&quot;  elsif n &amp;lt;= 1    return n  elsif @scratchpad[n] != :notcalculated    return @scratchpad[n]  else    @scratchpad[n] = fibo(n-1) + fibo(n-2)    return @scratchpad[n]  endend# Display the Fibonacci sequence.(1..50).each do |number|  puts &quot;fibo(#{number}) = #{fibo(number)}&quot;endWalking through the code… First we create a memoization array, a place to store the pre-calculated values. In this example, @scratchpad[] serves as our memoization array.The fibo(n) method is similar to the one in the earlier example, with a few subtle differences. First, we need to determine whether we’ve already calculated a particular value. Since we initialized all elements of the @scratchpad array with the :notcalculated symbol, it’s easy to figure out where work needs to be done. If a Fibonacci number fibo(n) has already been calculated, we return the value stored at @scratchpad[n]. Otherwise, we calculate the new fibo(n) and store that value at @scratchpad[n] for later use.Performance ComparisonThe performance of the two programs is compared in this 1-minute video. As the video shows, memoization is a performance booster.Sample CodeSample code related to this article can be found on GitHub.",
      "url": " /blog/2014/04/12/recursion-and-memoization/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-04-10-when-in-doubt-rake-clean": {
      "title": "When in Doubt, Rake Clean",
      "content"	 : "Earlier today, I upgraded from RubyMotion v 2.24 to v 2.26. Immediately after the upgrade, I attempted to run a RubyMotion app that I’m working on. The result?$ rake     Build ./build/iPhoneSimulator-7.1-Development   Compile ./app/app_delegate.rb   Compile ./app/views/score_label.rb   Compile ./app/views/paddle_view.rb      Link ./build/iPhoneSimulator-7.1-Development/pong-rm4.app/pong-rm4Undefined symbols for architecture i386:...clang: error: linker command failed with exit code 1 (use -v to see invocation)rake aborted!$  What happened? It just ran a few minutes ago, right before the upgrade! Was RubyMotion broken? Was it time to reach out to the Twitterverse or Stack Overflow for assistance?Not yet.Cooler HeadsEvery time RubyMotion build an app, it stores the results in the ./build directory. Since I had just done an upgrade, it was possible that remnants from a v 2.24 build were interfering with my new v 2.26 build. The solution?$ rake clean    Delete ./build$  And now the app runs fine. Crisis averted. Back to work!",
      "url": " /blog/2014/04/10/when-in-doubt-rake-clean/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-04-05-why-open-source": {
      "title": "Why Open Source?",
      "content"	 : "As members of the open source community, we have internalized the benefits of open source. Sometimes, knowing a topic so well can hinder us from explaining it to people who need to understand our work: Clients, customers, and employers. They need to understand us because they pay us. Understanding helps to build trust.The topic What is Open Source is covered in earlier post by that title. This presentation covers some of the “whys” of open source in terms that matter to the people we serve: Clients, customers, and employers.This presentation was delivered at the Flourish 2014 conference at the University of Illinois at Chicago. I am grateful to the Flourish organizers and to UIC for inviting me to speak.",
      "url": " /blog/2014/04/05/why-open-source/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-03-31-flourish-open-source-conference-at-uic": {
      "title": "Flourish Open Source Conference at UIC",
      "content"	 : "Flourish is an open source conference to be held at the University of Illinois at Chicago on Saturday, April 5, 2014. The conference is run by university students and tickets are free.Why go to Flourish? Because…  You like open source.  You want to know more about open source.  You want to meet people who are passionate about open source.  All (or some combination) of the above.Not Just SoftwareLinux may be the best known open source project, but open source is not just about software. At Flourish 2009 a speaker mentioned a funny little circuit board called “Arduino” during one of the presentations. I turned to my neighbor in the audience, and I asked “What’s an Arduino?”My neighbor pulled an Arduino out of his backpack and showed it to me. Wow. Open source extends to hardware, too! Since then, the Arduino has become part of the WindyCityRails Youth Program. Beyond microcontrollers, single-board Linux machines like the Raspeberry Pi, Beaglebone Black, and Parallella have joined the open source hardware ranks.See You ThereThank you, Flourish organizers, for inviting me to speak this year. UIC is where I first learned about open source, Linux, and the web. My appreciation for UIC extends beyond my CS degree.Great things happen when like-minded people come together to exchange ideas. I look forward to seeing you at Flourish 2014!",
      "url": " /blog/2014/03/31/flourish-open-source-conference-at-uic/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-03-25-how-gitignore-works": {
      "title": "How .gitignore Works",
      "content"	 : "Earlier today I ran into a Git issue within a RubyMotion project. I added a directory to the project’s .gitignore file, but Git seemed to ignore my ignore. Expressed more clearly, Git continued to track a directory that I explicitly told it to ignore.What?Either there was a bug in Git, or my understanding of .gitignore was incomplete. It was time for me to dig in and learn more about .gitignore.What I Learned About .gitignoreThe root cause of my problem: Once Git has begun tracking a file or directory, adding it to .gitignore changes nothing. Git will continue to track the file unless we explicitly tell Git to stop tracking the file.$ git rm --cached [filename]$ Or, if you want to stop tracking an entire directory (like me in this case)…$ git rm -r --cached [directoryname]$ The -r flag will tell Git to stop tracking all of the sub-directories and files within directoryname, recursively.Git was behaving exactly as designed.PenaltyI should have known this a long time ago. My penalty: A public admission :-)",
      "url": " /blog/2014/03/25/how-gitignore-works/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-03-10-cocoaconf-chicago-recap": {
      "title": "CocoaConf Chicago Recap",
      "content"	 : "                  One purpose of a conference is to help you to spot trends while there’s still time to reap the benefits of being an early adopter.  ~Brian Marick at SCNA 2013Early adopters on Apple’s Mac OS X and iOS platforms flock to CocoaConf, a multi-city conference for developers. Tickets are slightly easier to get than WWDC; CocoaConf consistently sells out.CocoaConf’s presenters are practicing developers, actively building real software every day. They come to CocoaConf to share their experiences in a wonderful upward-spiral of technical learning. Here are a few highlights from the latest CocoaConf, held March 7-8 near Chicago.Customers Will Pay for ServicesJustin Williams kicked things off with a keynote titled 10 Things I Think I Think. Williams recently acquired Glassboard, so his developer skills are blended with the insights of a business owner. His list of ten included one approach to making money from mobile apps: Forget about selling a million copies in the App Store. Instead, create a service, charge a monthly fee for the service, and give the app away for free so customers can engage with the service. Engaged customers will continue to pay the monthly fee. When customers are served well, they will pay.Effective iOS 7 Networking                Customer-focused mobile apps usually communicate with other software via the web. Ben Scheirman shared his experiences in building iOS apps that communicate with web services. Several questions are raised when we build apps like this, namely:  How do we include communication capabilities without sacrificing performance?  If the mobile app requests information from a web service, and the service is unavailable (or slow) how do we avoid frustrating the user?NSURLSession, introduced with iOS 7, lets us upload and download in the background. Users are kept happy because the app continues to function in the foreground. Scheirman’s slides and sample code give more details.It is also interesting to note what tools the presenters use in theirdaily work. Scheirman uses Charlesto monitor network traffic between machines, and to track down hiccups.Xcode Walkabout                Most of my iOS time is spent with Vim and RubyMotion. I use Xcode mainly to learn things that I can apply to RubyMotion. Still, Laura Savino’s exploration of Xcode proved valuable.Like many developers on the Apple platforms, Savino has a love/hate relationship with Xcode. She almost titled her talk “stupid little buttons that don’t even look like buttons.” Savino summarized several years of Xcode immersion and pair programming into 60 minutes of little-known tips and tricks. For example, Xcode plays nicely with Git (you can even show commit messages within the IDE). And it’s possible to use Vim key bindings while editing files.Sprite KitJosh Smith’s Sprite Kit presentation was full of gotcha-eliminating information. For example, the coordinate systems for Sprite Kit and UIKit are inverted. I’m sure this is documented somewhere, but I didn’t know about it! The bottom line with Sprite Kit: We can add animation to our apps without doing all of the fundamental work. Saves time.Slides and code are posted in a single repo on GitHub. Worth looking at.Parallel Computing with OpenCLThe parallel computing talk by Jeff Biggus was the most mind-blowing session of CocoaConf, for me. The presentation was exciting because it tied our current set of tools (like GCD) with high performance computing work currently underway at universities and at corporations like NVidia. When theory blends with application, great things can be achieved.Biggus shared some of the work of OpenCL, a standard designed for cross-platform parallel computing. We care about parallel computing because…  Moore’s Law has just about run its course.  Engineers have packed transistors about as tightly as they can on silicon.Unless we can figure out how to rewrite the laws of physics, the next advances in computing performance will come from making processors work together without stepping on each other’s toes.The Klein Family2014 marks CocoaConf’s third year in the Chicago area. The conference is run by Dave and Debbie Klein and their 14 children. About The Family Behind CocoaConf gives details.Thank you, Klein family, for another great CocoaConf!",
      "url": " /blog/2014/03/10/cocoaconf-chicago-recap/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-03-04-fixing-macvim-on-osx-mavericks": {
      "title": "Fixing MacVim on OS X Mavericks",
      "content"	 : "Experience told me to delay upgrading to OS X Mavericks for as long as possible because the upgrade would likely break my dev environment. Sure enough, the upgrade broke MacVim.~$ which mvim~$ The ‘nix which command returned a null response when asked about MacVim. Not cool, Mavericks!Fortunately, I’m running Homebrew. After the standard brew doctor and brew update, the following resolved the MacVim problem:~$ brew uninstall macvimUninstalling /usr/local/Cellar/macvim/7.4-70...~$ followed by…~$ brew install macvim==&amp;gt; Downloading https://github.com/b4winckler/macvim/archive/snapshot-72.tar.gz######################################################################## 100.0%==&amp;gt; ./configure --with-features=huge --enable-multibyte --with-macarchs=x86_64 --enable-perlinterp --enable-rubyinterp --enable-tcli==&amp;gt; make==&amp;gt; Caveats.app bundles were installed.Run `brew linkapps` to symlink these to /Applications.==&amp;gt; Summary🍺  /usr/local/Cellar/macvim/7.4-72: 1799 files, 28M, built in 37 seconds~$ And now…~$ which mvim/usr/local/bin/mvim~$ Whew. Homebrew saves the day again!",
      "url": " /blog/2014/03/04/fixing-macvim-on-osx-mavericks/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-02-22-what-is-open-source": {
      "title": "What Is Open Source?",
      "content"	 : "                Entrepreneurs, especially those outside of software development, may find this article useful.When Performance MattersOver seventy percent of the web servers on the planet run Linux, the open source operating system. Google, Facebook, and Amazon all run Linux. They bet their companies on this decision every day.Given that thousands of successful companies have bet their livelihood on open source, an observer might ask these questions:  What is open source?  Why should one care about open source?  How can a company profit from software that is given away for free?Source Code, Executable CodeFirst, a few definitions. Source code is a human-modifiable form of software. It’s software as written by programmers. Source code must be translated into executable code (either compiled or interpreted) before a computer can run it.Water is a useful metaphor for this discussion. Water can exist in three different states (steam, liquid, and ice) without changing its chemical properties. It’s still water. Likewise, software can exist as source code or executable code – it’s still software. We use water in one of its three states depending on whether we want to wash a car (liquid), cool a drink (ice), or clean a carpet (steam).In the world of software, executable code is difficult for humans to read, but easily executed by computers. Source code is easily read and modified by humans, but computers cannot execute it. Source code must be compiled or interpreted before a computer can execute it.One Way TranslationTranslating source code into executable code is a one-way street. Once a programmer has compiled source code into executable code, it is virtually impossible to convert it back into source code. You might think of a compiler as a blender that chops the food into a form easily digestible by the computer. After it’s chopped, the food never returns to its original form.That’s why programmers always keep a copy of the source code handy. It might be necessary to make changes (fix bugs) and re-compile.Trade secrets that are hidden in executable code can be easily read in source code. So developers go to great lengths to protect their source code, except in the open source community.Closed Source TraditionMost of today’s business software is closed source. Two examples: Microsoft Office and Apple iWork. Both Microsoft and Apple consider the source code for their respective office suites to be highly confidential. You will never (legally) download the source code for a closed source product. Security is so tight at Microsoft, for example, that engineers are only allowed to view that portion of the source code that is relevant to their current project.Contrast that against open source software. Open source products make the source code freely available for viewing, comments, and modification by the software community at large.Open Source Chaos?But doesn’t such openness lead to chaos? Intuitively, you would think so, but it doesn’t. The culture of the open source community has its own rules of conduct that most members willingly follow. Rules are enforced by the community in ways that developers respond to.It is difficult to imagine an apparently chaotic system that produces robust software. How counter-intuitive! But a long list of successful open source projects (available through your favorite search engine) shows that the method works. Eric S. Raymond explores open source cultural norms in his book The Cathedral and the Bazaar.The Banking MetaphorSome makers of security software believe that hiding their source code will prevent malcontents from finding vulnerabilities and exploiting them. Their reasoning is like that of a bank owner who keeps the building blueprints secret so thieves don’t know how to drill the safe from next door.Other security experts disagree. They want many people (including malcontents) to view the code so that vulnerabilities can be discovered and patched early. Their philosophy could be summed up in a statement by the creator of Linux:  Given enough eyeballs, all bugs are shallow.  ~Linus TorvaldsIn other words, when thousands of developers are working on the same project they are likely to be widely dispersed across the code. Wide coverage means that a given bug is more likely to be discovered by at least one developer.In our banking metaphor, the open source company would be like a bank owner who wants many people to review the blueprints, find the weak spots, and fix security holes before the bank gets robbed.It’s Not All-or-NothingChoosing an open or closed source strategy is not an all-or-nothing decision. Google, the busiest search engine on the web, has bet the company on open source software. And yet their most strategic software, the secret mathematical engine that drives their search results, remains closed. So how does a company decide what to open and what to close?Open source works when the upside of sharing outweighs the downside of exposed code. In the Google example, using and contributing to Linux gives Google a very stable operating platform at a relatively low cost. In effect they are leveraging the time and talent of thousands of developers around the world, while those developers are also leveraging Google’s expertise.It doesn’t matter that Google’s competitors also benefit from that same stable Linux platform because Google differentiates itself through advanced search technology. By leveraging the community for assistance with the platform (Linux, Apache, and other tools), Google frees up engineering time and talent to focus on their secret sauce: Search methodology and mathematics.If Your Business Isn’t SoftwareSo… If you don’t run a software company, how can you benefit from open source?There’s always a chance that open source won’t work for your company. Maybe you run an enterprise that doesn’t benefit from the web. In that case, your current software options may suit you just fine.Of course, you may have already benefited from open source. There is at least a 70% chance that your company’s web site runs on Linux. If that’s the case, then rest assured that you’re running on a very stable and robust platform.Think Big, Start Small for ROIIf you really want to see ROI from open source, encourage your technical team (software developers, network support, etc.) to explore open source tools. Chances are that they’ve already experimented with open source and they’re waiting for an opportunity to do an official company project.Start small, perhaps with an automated network monitoring project or a small database. As you explore the technology, new ideas will become apparent to you. View this as a way to accelerate and strengthen the software development process.Open Source and AutomobilesBMW is arguably the best automotive engineering company on the planet. Does BMW invent the wheel every time they design a new automobile? Absolutely not. BMW leverages thousands of years of “open source” wheel technology, and they focus their design energy in areas where they can make a difference: Engine, transmission, suspension, and luxury amenities. A similar model can be applied to software development. In fact, it already has.Suggested ReadingThe Cathedral and the Bazaar, by Eric S. Raymond. The author is both participant and anthropologist in the open source community.Note: An earlier version of this article was published at WisdomGroup.com.",
      "url": " /blog/2014/02/22/what-is-open-source/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-02-17-sgi-and-big-data": {
      "title": "SGI &amp; Big Data",
      "content"	 : "                Silicon Graphics International Corporation (SGI) computers rendered the special effects for the original Jurassic Park movie. Computer enthusiasts coveted SGI machines throughout the 1990s.But success in the computer industry is fleeting. A few years after Jurassic Park, a convergence of tech advances (Moore’s Law, x86 architecture, and Linux) made it possible for commodity PCs to perform as well as SGI’s premium workstations. Wall Street traders and other power users abandoned workstations in favor of Linux-based PCs. High-end makers like SGI fell on hard times.Today, SGI is fighting back. The company is blending x86, Linux, and (buzzword alert) big data to attack the high performance computing market. The vision was presented at this month’s Chicago ACM meeting by Brian Freed, VP of Strategy for SGI.What is Big Data?Freed shared a definition of big data from Edd Dumbill’s O’Reilly Radar article. Big data is characterized by volume (lots of it), variety (it’s unstructured), and velocity (the data changes quickly).In the words of the O’Reilly author…  Big data is data that exceeds the processing capacity of conventional database systems. The data is too big, moves too fast, or doesn’t fit the strictures of your database architectures. To gain value from this data, you must choose an alternative way to process it.  ~Edd DumbillDefinitions are fine, but it’s more important to understand why a company might care about big data. Here are a few examples that Freed shared during the ACM meeting.Example: Fraud Detection with Big DataConsider one challenge faced by credit card companies. When a credit card is presented for an online purchase, how does the authorizing body know if the charge is legitimate? Can legitimacy be determined in a timely fashion, before an impatient buyer abandons a slow seller for a quicker seller?Sellers who decide too quickly will suffer fraud. Sellers who decide too slowly will lose customers. The problem is amplified because millions of shoppers are clicking the “buy now” button simultaneously, and they all expect an answer right now.Traditional fraud detection systems could measure just a few potential fraud criteria within the allowed time window. SGI solves the problem with Hadoop clusters running on SGI hardware. This big data design is able to examine each transaction deeper, and render a yes/no decision faster. Buyers are happier because they can complete a purchase faster. Companies are happier because fraud is reduced.Big data helps credit card companies to make better authorization decisions in less time.Example: Auto ManufacturingSome problems, like credit authorization, require a quick response.  Other problems, like manufacturing, require the problem solver to crunch large volumes of data.Consider an auto manufacturer. Every system in the modern automobile is controlled by software on silicon. Where software runs, data can be collected. The data piles up rapidly over time.Manufacturers have discovered some unexpected benefits of collecting so much data. For example, they can identify trends like common failures among components, and use that data to improve future components. They can spot hidden trends, like geographic issues related to extreme cold or heat, and then design parts that are specially equipped for the target environment.For these particular manufacturing examples, handling huge volumes of data is more important than delivering a quick answer. Insights that lead to quality improvements can be delivered in hours, and that’s fast enough for the designers. Before big data, many design decisions were driven by instinct and experience alone. Big data helps auto companies to make more informed decisions.Pitfalls of Big DataOne big pitfall is trying to use the big data hammer for every nail in sight, whether the solution fits the problem or not. It’s the same hazard we face with any new technology. We run the risk of using a sledgehammer when a fly swatter would do.A few ways to avoid the pitfalls: Start small. Have goals. And, like any good agile software developer, iterate. In Freed’s words…  Successful implementation of big data is not an event. It is an iterative process where we continuously learn over time.About Chicago ACMThe Chicago Chapter of the Association for Computing Machinery (Chicago ACM) is on fire. December’s meeting featured a supercomputing presentation by Sharan Kalwani of Fermilab. The February meeting was all about SGI’s push into big data, and next month will focus on the Internet of Things (IoT). The organizers are assembling an exciting combination of events. Looking forward to more!",
      "url": " /blog/2014/02/17/sgi-and-big-data/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-02-12-homebrew-fundamentals": {
      "title": "Homebrew Fundamentals",
      "content"	 : "Spend enough time developing software on Mac OS X, and you will eventually need to install libraries that were written for Unix, but not specifically for OS X. Fortunately we have Homebrew, which makes it easier to install Unix libraries on the Mac.Why Homebrew?Before installing any new software, it is helpful to have a clear view of why we need it.Homebrew is a package manager. It differs from earlier package managers like Fink and MacPorts because it is written in Ruby and based on Git. The Ruby/Git foundation means that developers from around the planet can easily contribute to Homebrew’s growth.Before package managers, developers who needed a particular library would have to:  Manually download source code for the library.  Manually compile using gcc or another compiler.  Resolve dependencies manually.Manually, manually, manually… The old way was long and error-prone. Max Howell created Homebrew to download, compile, and resolve dependencies automatically. Now developers can focus more attention on solving problems that are directly related to their work.How to Install Homebrew                Some parts of Homebrew require Xcode, Apple’s environment for developing software on Mac OS X. Make sure you have Xcode installed on your Mac. Xcode is available for free in the Mac App Store.With Xcode installed, you can install Homebrew by pasting the followingcommand into a terminal window.$ ruby -e &quot;$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)&quot;installThe script will walk you through the installation process. If you would like to read the script before installation, you can visit the Homebrew repo on Github.Installing PackagesA list of available Homebrew packages is maintained on GitHub.To install a package, say imagemagick for example…$ brew install imagemagickBefore Homebrew, installing imagemagick was long and arduous. With Homebrew, the installation and compilation steps still take awhile. But dependencies are resolved by Homebrew, and little user interaction is required after the first step.Maintaining HomebrewDevelopers from around the world contribute to Homebrew, so the tool gets improved often. To check the health of your Homebrew installation, use brew doctor.$ brew doctorWarning: Your Homebrew is outdated.You haven&#39;t updated for at least 24 hours, this is a long time in brewland!To update Homebrew, run `brew update`.$ brew update will apply recent updates.$ brew updateUpdated Homebrew from f83642fc to cfad513e.==&amp;gt; New Formulae...==&amp;gt; Updated Formulae...==&amp;gt; Deleted Formulae...$ Looking at PackagesThere are several ways to view the packages that have been installed on a system via Homebrew. Use brew list at the command prompt to get a quick view of what Homebrew has installed.Even better: brew server will launch a local Sinatra app, and then you can point a browser to http://localhost:4567 for a web-enabled view of the installed packages.$ brew serverView our tasting menu at http://localhost:4567/Use &quot;Control-C&quot; to exit.[2014-02-12 16:33:18] INFO  WEBrick 1.3.1[2014-02-12 16:33:18] INFO  ruby 1.8.7 (2012-02-08) [universal-darwin12.0]== Sinatra/1.3.3 has taken the stage on 4567 for development with backup from WEBrick[2014-02-12 16:33:18] INFO  WEBrick::HTTPServer#start: pid=96694 port=4567                Making Your Own PackagesHomebrew is Ruby-based, so Rubyists can create their own packages.  Details can be found in the (continuously updated) Homebrew repo on GitHub.ConclusionEnjoy Homebrew!",
      "url": " /blog/2014/02/12/homebrew-fundamentals/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-02-06-installing-rubinius-using-rvm": {
      "title": "Installing Rubinius Using RVM",
      "content"	 : "                Rubinius is an implementation of the Ruby language designed for concurrency. The lead developer of Rubinius, Brian Shirai, will present Rubinius at ChicagoRuby on March 4, 2014. ChicagoRuby will follow-up with a Rubinius-themed hack night on March 12th. Details.To prepare for the Rubinius events, some people may choose to install Rubinius locally. RVM makes the process smooth.RVM RecapRuby Version Manager (RVM) is an awesome tool that enables developers to:  install multiple versions of Ruby on one system,  bounce between the different versions, and  to do all of that with minimal headaches.Similar tools exist, but RVM is the one that has always worked for me.  If you don’t have RVM installed, detailed installation instructions can be found at http://rvm.io.Get the Latest RVMThese instructions work on Mac OS X v10.8.5. The same steps will probably work on Linux, except for the references to Homebrew.First, make sure you’re running the latest version of RVM.$ rvm get headDownloading https://get.rvm.ioDownloading https://github.com/wayneeseguin/rvm/archive/master.tar.gzUpgrading the RVM installation in /Users/rth/.rvm/    RVM PATH line found in /Users/rth/.bashrc /Users/rth/.zshrc.    RVM sourcing line found in /Users/rth/.bash_profile /Users/rth/.zprofile.    Migrating environment ruby-1.9.2-p290 to use with &#39;gem-wrappers&#39; gem.     …     Installing gem-wrappers gem in 3 gemsets.Upgrade of RVM in /Users/rth/.rvm/ is complete.     …In case of problems: http://rvm.io/help and https://twitter.com/rvm_ioRVM reloaded!$ Next, Install RubiniusAs of this writing, Rubinius can operate in 1.8 language mode (the default) or 1.9 language mode. Installing in 1.9 mode requires an additional command line flag, shown below.$ rvm install rbx --1.9Testing the Rubinius InstallationFirst, let’s make sure that RVM shows the new Rubinius (rbx) installation.$ rvm listrvm rubies=&amp;gt; rbx-2.2.4 [ x86_64 ]   ruby-1.9.2-p290 [ x86_64 ] * ruby-1.9.3-p484 [ x86_64 ]   ruby-2.0.0-p353 [ x86_64 ]# =&amp;gt; - current# =* - current &amp;amp;&amp;amp; default#  * - default$ It’s always good to have multiple ways to verify information.$ ruby --versionrubinius 2.0.0.n37 (1.9.3 6d611c7a 2014-02-06 JI) [x86_64-darwin12.5.0]$ And now, let’s do a quick “Hello World” test drive using the Rubiniusversion of irb.$ irbrbx-2.2.4 :001 &amp;gt; p &#39;Hello World, from Rubinius&#39;&quot;Hello World, from Rubinius&quot; =&amp;gt; &quot;Hello World, from Rubinius&quot;rbx-2.2.4 :002 &amp;gt; quit$ Post Installation NotesThe installation script found two outdated Homebrew-installed packages on my system: automake and openssl. It would have been better for me to upgrade Homebrew and related packages before installing Rubinius.Why install Rubinius? Why do we care about concurrency? These are two questions I expect to explore through my new Rubinius installation.Come Hack With RubiniusIf March 2014 finds you in the Chicago area, you’re invited to visit ChicagoRuby for some back-to-back Rubinius action. See http://meetup.com/chicagoruby for details.",
      "url": " /blog/2014/02/06/installing-rubinius-using-rvm/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-02-03-exploring-controversial-coding-topics-at-8th-light": {
      "title": "Exploring Controversial Coding Topics at 8th Light",
      "content"	 : "8th Light recently hosted a panel discussion on Controversial Coding Topics. I was honored to share the panel with two technology leaders whom I admire: Mark Rickmeier of Table XI and Corey Haines of Wavetable. Rachel Feigenbaum of 8th Light organized the event.Topics CoveredSome of the topics covered during the discussion:  Hiring. What do you look for when building a team?  Establishing team standards.  Balancing professional time with personal time. Don’t work 12-hourdays!GratitudeThank you 8th Light for making this happen.",
      "url": " /blog/2014/02/03/exploring-controversial-coding-topics-at-8th-light/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-01-28-an-environment-of-respect-2nd-iteration": {
      "title": "An Environment of Respect, 2nd Iteration",
      "content"	 : "Thank you to everyone who offered feedback on An Environment of Respect, which included an early draft of the WindyCityRails Code of Conduct.The frank and earnest exchange of ideas was educational. Some of the feedback was positive, on the order of “we’re all colleagues, we treat each other with respect, that’s good.”However, I paid special attention to the negative feedback because it surprised me. Surprise happens when I face something that I do not understand. When I encounter something that I do not understand, there’s an opportunity for learning.So I did what I always do when I need to learn more. I spoke with people who know more than me.Wise CounselSeveral people in our industry were generous when I asked for advice. One technology veteran summed it up this way:  You wrote a code of conduct for an Environment of Respect. 99.9% of the people will know what that means, and they can even function well without a code. But a code of conduct needs to written for an Environment of Hostility… for the one fool who doesn’t know how to act.In a discussion about reducing bureaucracy, one developer offered this view:  Think of it less as bureaucracy and more along the lines of “In case of emergency, break glass and help is on the way.”I am grateful to everyone who took the time to share their thoughts.Verbose and Draconian? Not Here.Some of the advice seemed to point toward a more verbose and draconian code of conduct, like the ones suggested by a few people last week. Not good. If we have a code, it’s better to avoid the threatening tone. WindyCityRails is a community of colleagues who treat each other with respect.Fortunately, one member of our team found a code that works. Every member of the community is treated like an independent-thinking adult who respects the rights of others. Expectations are clear, and the threatening tone is gone.Ruby DCamp: ThanksEvan Light wrote the original version of this code of conduct for Ruby DCamp. When asked for permission to use his work for WindyCityRails, Evan responded with an enthusiastic yes. Thanks Evan!Here it is.Draft: Code of ConductPrefaceWindyCityRails is and has been an event made up of welcoming, tolerant, compassionate, and loving participants. For several years now, WindyCityRails participants have been respectful of one another in our differences. We have employed those differences to elevate, educate, and celebrate one another at WindyCityRails.It is in that same spirit that we now adopt this Code of Conduct: Not as a punitive action, but as a measure to protect that which we already have and to signal to all that we are a tolerant and loving community.WindyCityRails Code of ConductWindyCityRails is dedicated to providing a harassment-free conference experience for everyone, regardless of gender, gender identity, sexual orientation, disability, physical appearance, body size, race, or religion. We do not tolerate harassment of participants in any form.If you think your conversation is making another community member uncomfortable, try to make amends and move forward.Participants asked to stop any harassing behavior are expected to comply immediately. WindyCityRails participants violating these rules may be sanctioned or expelled from the conference at the event organizers’ discretion. This applies to all attendees, speakers, sponsors, and otherwise.That said, silliness, mockery, and general irreverence are welcome, expected, and even encouraged so long as they all come from a loving place.However, should another participant’s behavior be injurious to you, we ask three things.1) Give others the benefit of the doubt.People are generally decent. It has been our experience, these past several years, that those who attend WindyCityRails are just a cut above in that respect.2) Attempt to address the behavior with the other party immediately.In the case of intractable situations, we are here to help you (see “Ask for Help!” below). However, this is where we ask participants to try to behave “like grown ups.” It is part of the WindyCityRails ethos: If you have a problem with something, don’t wait for someone to fix it but instead try to fix it yourself.If you’re comfortable doing so, let the person know that you found what he or she said or did inappropriate. Attempt to resolve the situation amicably. When addressing it yourself, remember to continue to treat the other party with kindness and respect.If you’re uncomfortable approaching the other person…3) Ask for Help!We’re all human. While life, and WindyCityRails, expects a good deal of self-sufficiency, we are also a community. If you cannot manage a situation alone, we are here for you. Seek out any member of the conference organizer team. We can be identified with special “Organizer” lanyards.~WindyCityRails Organizers TeamHistory (updated 31Dec2015)For a brief history of how this issue evolved, take a look at…  An Environment of Respect  An Environment of Respect, 2nd Iteration (this article)  An Environment of Respect, 3rd IterationConclusionThanks for reading this through. See you at WindyCityRails!",
      "url": " /blog/2014/01/28/an-environment-of-respect-2nd-iteration/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-01-21-an-environment-of-respect": {
      "title": "An Environment of Respect",
      "content"	 : "Here is an early draft of the WindyCityRails Code of Conduct:  WindyCityRails strives to provide a healthy, harassment-free conference experience for all attendees. Our Code of Conduct, which has been practiced by members of our community for years, is as follows: Treat everyone at the conference as you would want yourself, a family member, or an esteemed colleague to be treated. Our community is stronger when every member contributes to the safety and learning of the other members. We are colleagues, and we treat each other with respect.There may be some wordsmithing and typo-correction this week, but the final version will essentially read as it appears above. Key objectives achieved:  Simplicity. The point is made with minimal words.  Inclusiveness. Everybody who wants to learn and engage is included.  Respect. Everybody is treated with respect. No threats are made.You have already read the most important part of this post. The rest tells how the code came to be.First Person SingularNormally, when discussing WindyCityRails and ChicagoRuby, I shine the light on the organizers as a team (we) rather than on myself. WindyCityRails is blessed with a great team of organizers. We pool our talents to get things done.However, when concerns are raised, the buck stops with the team leader: me. Please forgive me for using first person pronouns throughout this post. Also, other members of the organizer team may have opinions that differ from mine. If I say anything here that disturbs you, please know that it comes from me directly. I am the only one at fault.My Knee-Jerk ResponseLast week a Twitter user asked if WindyCityRails had a code of conduct. I responded (through the @WindyCityRails handle) with a one-word answer: No.Why the terse response? Because I have a deep bias against bureaucracy. Initially, that’s what a code of conduct sounded like to me. Do we have a problem with diversity in the tech community? Hell yes. But bureaucracy does not solve problems. We will only solve the diversity problem through active engagement and real work. We solve the diversity problem by ensuring that people from all groups feel welcome and engaged.One example of real work: The WindyCityRails Youth Program, launched last year. A diverse group of college students taught a diverse group of high school students how to program the Arduino. These students from diverse backgrounds bonded via their common interest in technology.To summarize my knee-jerk response: A code of conduct makes us feel good about nice words written on a sheet of paper, while no real work gets done.After My Initial ReactionKindergarten taught me that it is important for me to listen to others. A community thrives on interaction between people who see things differently. If everyone thinks the same way, we don’t have diversity, do we?Other inquiries about a code of conduct followed via Twitter and email. All were helpful. Some people offered sample text from other events. Most of the sample text was good.Two of my fellow organizers (thank you Ginny Hendry and Justin Love) encouraged me to examine the question more closely. Clearly, I needed to study this. So that is how I have spent the last few days.SimplicityIn drafting text for WindyCityRails (and, by extension, ChicagoRuby) I tried to create something that fits our culture. We are an inclusive group and we treat people well.At the same time, it is important to keep the word count low to limit bureaucracy.InclusivenessThe WindyCityRails and ChicagoRuby communities have always strived to be inclusive. We do that in several ways.Here’s an example. Before I became an organizer of ChicagoRuby, I heard that a group of developers met for drinks after every meeting. I always heard about the gathering after the fact. I could have taken this personally, but I realized that the group was not intentionally excluding me. They just didn’t know me. Further, they were so caught up in their discussions that it simply never occurred to them to invite people they didn’t know.Things are different today. Today we announce the drink invitation at the beginning of each meeting, and we post it with every meeting announcement. Brand new people are made to feel welcome.Further, we make it clear that one does not have to drink alcohol to participate. Soft drinks and cranberry juice are in abundance.Another example of inclusiveness: All of ChicagoRuby’s monthly events are free because we want to include aspiring developers regardless of income. Expenses for the monthly events are covered by monthly sponsors and revenue from WindyCityRails.Excluding OthersI have more experience with racism than any other -ism, so that’s what I’ll talk about here. A mentor of mine raised two questions during a discussion about racism and oppression.      Do you want to end all oppression, or just the oppression directed at you?        Do you really want to end oppression, or do you simply want to change places with your oppressor?  Here’s an experience that influences my thoughts on this subject. A few decades ago, when I was a young developer for a company in Colorado, I had a confrontation with senior developer, a White man. I was certain that this was a Black/White issue. I won’t go into details, but I will admit that I treated that White man very badly in retaliation.Some days later, as I walked past my manager’s desk, I noticed my “nemesis” interacting with my manager (a White man who also happened to be his manager) in the same manner that he had interacted with me. That’s when I figured out that this guy wasn’t a racist, he was just an asshole.And, because of the way I had treated him, I was the one guilty of racism.In drafting the WindyCityRails code of conduct, it was important to avoid showing favoritism toward any group. All groups must be treated with respect, not just my own.RespectI was disturbed by the language in some of the sample codes of conduct. It took me awhile to figure out what bothered me. Finally, it hit me: The tone was threatening. They seemed to say (paraphrased): “Follow these rules or we will kick you out and take away your money.”Colleagues don’t threaten each other. Colleagues treat each other with respect.Some may point out that without a method of enforcement, the code has no teeth. They’re right. There are no teeth. However, I don’t believe that “teeth” or threats are needed amongst colleagues. Colleagues treat each other with respect.ConclusionThere you have it… my opinion. Can my opinion change? Perhaps. I have many blind spots, and that is why I am sharing my thought process. I look forward to hearing your feedback in the comments below or over a cup of coffee.By the way, the WindyCityRails call for proposals is still open, as of the date of this post. If you are doing something exciting with Ruby and/or Rails, please submit a proposal. Thanks.Update (Jan 2014)After this post, several colleagues introduced me to new information. The result, an updated code of conduct, is covered in An Environment of Respect, 2nd Iteration.History (updated 31Dec2015)For a brief history of how this issue evolved, take a look at…  An Environment of Respect (this article)  An Environment of Respect, 2nd Iteration  An Environment of Respect, 3rd Iteration",
      "url": " /blog/2014/01/21/an-environment-of-respect/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-01-15-henry-ford-faster-horse": {
      "title": "Henry Ford&apos;s Faster Horse",
      "content"	 : "                  If I had asked people what they wanted, they would have asked for a faster horse.  ~Henry FordThe above Henry Ford quote is often cited in presentations about innovation. The point of the quote: An inventor who listens to customers too closely, without observing customer behavior, will reap tiny improvements at best. Ford ignored the request for “a faster horse”, and that is how the Ford Motor Company became a leader in the early auto industry.That’s one way to interpret Ford’s quote. Last night, I was introduced to another view.Parse the Quote Differently, Don’t Ignore itLast night’s IxDA Chicago meeting featured a presentation by Chris Holmes, who shared a different view of the Ford quote. If we focus on improving the speed of horses (perhaps through nutrition or better horse shoes) very little improvement can be achived.But something interesting happens when we parse the quote differently. The adjective faster reveals the customer’s true need. The noun horse is the customer’s “solution” based on what they currently know about the world. For the innovator, faster stands out. Focusing on faster leads to innovation.Focus on FasterFaster tells us that we can stretch beyond our current thinking and consider other modes of transportation. Focusing on faster led to the beginning of the automobile industry.Customers are communicating their desires all the time. We need to listen carefully and parse well. Thanks IxDA Chicago and Chris Holmes for the lesson.",
      "url": " /blog/2014/01/15/henry-ford-faster-horse/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-01-06-beaglebone-black-ubuntu-ruby-rails-part-2": {
      "title": "BeagleBone Black Running Ubuntu: Part2 (Plus Ruby on Rails)",
      "content"	 : "                Part one of this series shows how to install Ubuntu on the BeagleBone Black. We used a MacBook Pro to burn an Ubuntu disk image onto an SD card, and then we booted a BeagleBone Black from the image we created.This post, part two, covers the installation of the Ubuntu GUI, Ruby, and Rails. All of the commands in this article are run on the BeagleBone Black.Node.js bonus: Rails requires a JavaScript runtime, and Node.js offered the quickest way to fulfill this requirement. Details appear within.Gotcha: Partition SizeAt the end of part one, we successfully booted the Bone with the Ubuntu command line interface. Now it’s time to add the GUI. Two things to know about the Ubuntu GUI installation…  The partition we created on the SD card (in part one) is too small to hold the Ubuntu GUI. Solution: The SD card has some extra room, and we can re-size the partition.  We can install the Ubuntu GUI with a single line command. But it takes an hour for the Bone to download, compile, and install all of the GUI libraries.If we try to install the GUI with insufficient space, the installation will fail midway and we will have wasted half an hour. So it’s best to re-size first.Doing Our Own Re-Sizing?Why didn’t the partition have the right size when we originally downloaded the image file? Good question.My guess: The image file was designed to be as small as possible in order to minimize download time. That makes sense. I plan to test this theory by creating a new image with a larger partition size and a pre-installed GUI. If the test is successful, results will be posted on this blog. If the mission fails, then the secretary will disavow any knowledge…How to Re-Size the Partitiondf is the Unix ‘disk free’ command. It shows used/available disk space.ubuntu@ubuntu-armhf:~$ dfFilesystem     1K-blocks    Used Available Use% Mounted onrootfs           3778576 2722944    885776  76% //dev/root        3778576 2722944    885776  76% /devtmpfs          253580       4    253576   1% /devnone               50748     608     50140   2% /runnone                5120       0      5120   0% /run/locknone              253728     204    253524   1% /run/shm/dev/mmcblk0p1      1004     480       524  48% /boot/uboot/dev/mmcblk1p1     65390    6536     58854  10% /media/boot/dev/mmcblk1p2   1748200    2664   1655068   1% /media/rootfsubuntu@ubuntu-armhf:~$ ll is one of the useful aliases built into Ubuntu’s .bashrc file. Wecan use it to examine the partitions on the SD card.ubuntu@ubuntu-armhf:~$ ll /dev/mmcblk*brw-rw---- 1 root disk 179,  0 Jan  5 15:37 /dev/mmcblk0brw-rw---- 1 root disk 179,  1 Jan  1  2000 /dev/mmcblk0p1brw-rw---- 1 root disk 179,  2 Jan  1  2000 /dev/mmcblk0p2brw-rw---- 1 root disk 179,  8 Jan  1  2000 /dev/mmcblk1brw-rw---- 1 root disk 179, 16 Jan  1  2000 /dev/mmcblk1boot0brw-rw---- 1 root disk 179, 24 Jan  1  2000 /dev/mmcblk1boot1brw-rw---- 1 root disk 179,  9 Jan  1  2000 /dev/mmcblk1p1brw-rw---- 1 root disk 179, 10 Jan  1  2000 /dev/mmcblk1p2ubuntu@ubuntu-armhf:~$ fdisk will resize the partition we’re after. root priviledges are required to modify the partition table, so we’ll use sudo. The standard sudo disclaimer applies.A few useful fdisk commands:  p prints the partition table.  d deletes a partition.  n creates a new partition.  w write new information to the partition table.  q quits fdisk.Here’s the plan: In order to increase the size of /dev/mmcblk0p2, we will delete it, and then re-create it with a larger size. Note the use of the d and n commands in the following sequence. When fdisk asks us for the new partition number, type, first sector, and last sector, we will choose the defaults. Choosing the defaults will use all of the available space on the SD card.Your numbers will vary depending on the size and configuration of your SD card, but the general procedure will be the same.ubuntu@ubuntu-armhf:~$ sudo fdisk /dev/mmcblk0[sudo] password for ubuntu:Command (m for help): pDisk /dev/mmcblk0: 3965 MB, 3965190144 bytes4 heads, 16 sectors/track, 121008 cylinders, total 7744512 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x80008000        Device Boot      Start         End      Blocks   Id  System/dev/mmcblk0p1   *        2048      133119       65536    e  W95 FAT16 (LBA)/dev/mmcblk0p2          133120     1638399      752640   83  LinuxCommand (m for help): dPartition number (1-4): 2Command (m for help): pDisk /dev/mmcblk0: 3965 MB, 3965190144 bytes4 heads, 16 sectors/track, 121008 cylinders, total 7744512 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x80008000        Device Boot      Start         End      Blocks   Id  System/dev/mmcblk0p1   *        2048      133119       65536    e  W95 FAT16 (LBA)Command (m for help): nPartition type:   p   primary (1 primary, 0 extended, 3 free)   e   extendedSelect (default p): pPartition number (1-4, default 2): 2First sector (133120-7744511, default 133120):Using default value 133120Last sector, +sectors or +size{K,M,G} (133120-7444511, default 7744511):Using default value 7744511Command (m for help): pDisk /dev/mmcblk0: 3965 MB, 3965190144 bytes4 heads, 16 sectors/track, 121008 cylinders, total 7744512 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x80008000        Device Boot      Start         End      Blocks   Id  System/dev/mmcblk0p1   *        2048      133119       65536    e  W95 FAT16 (LBA)/dev/mmcblk0p2          133120     7744511     3805696   83  LinuxCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Warning: Re-reading the partition table failed with error 16: Device or resource busy.The kernel still uses the old table. The new table will b eused atthe next reboot or after you run partprobe(8) or kpartx(8)Syncing disks.ubuntu@ubuntu-armhf:~$The warning/error message at the end just means that we need reboot the Bone before the partition table takes effect.Reboot the BeagleBone Black, holding down the boot switch (closest tothe USB port) to ensure that we boot to the system on the SD cardinstead of the eMMC.After the Bone reboots, run resize2fs to expand the partition created above.ubuntu@ubuntu-armhf:~$ sudo resize2fs /dev/mmcblk0p2[sudo] password for ubuntu:resize2fs 1.42.5 (29-Jul-2012)Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing requiredold_desc_blocks = 1, new_desc_blocks = 1The filesystem on /dev/mmcblk0p2 is now 951424 blocks long.ubuntu@ubuntu-armhf:~$And now we have enough room to install the Ubuntu GUI.Installing the Ubuntu GUIUpdate (Feb2014): In the comments below, Jonathan Chan describes how he updated the desktop installation files before installing the Ubuntu desktop. To update the desktop installation files, grab the latest list of packages (update) and then upgrade the packages that need it.$ sudo apt-get update$ $ sudo apt-get upgrade$  After the partition on the SD card has been resized, this command will intall the GUI. The command is short, but the process takes about an hour:$ sudo apt-get install ubuntu-desktopWhen installation and compilation are complete, Ubuntu will return to the command prompt. Here’s how to reboot:$ sudo rebootSeveral minutes later, the Ubuntu 12 GUI will appear. Congratulations!  Login using the default credentials (login: ubuntu, pw: ubuntu) to get to the Ubuntu desktop.Gotcha: Running RVMI prefer to use the Ruby Version Manager (RVM) for bouncing between Ruby versions. RVM misbehaved, initially. Then I learned something special about RVM’s interaction with Ubuntu. From the RVM support pages…  For RVM to work properly, you have to set the ‘Run command as login shell’ checkbox on the Title and Command tab inside of gnome-terminal’s Settings page.This image shows the checkbox mentioned in the quote. It’s inside of the lower red rectangle.                Details are in the RVM support article Integrating RVM with gnome-terminal.Gotcha: Ruby InstallationRuby installation initially failed (speculation) because the Bone went into power save mode during the installation process. Ruby installed successfully on the second try when I kept the machine awake by moving the mouse. This power save hypothesis has not been thoroughly tested.Gotcha: Rails Installation                Rails needs a JavaScript runtime in order to function. Here are two ways to meet this requirement:  Install Node.js, or  Install therubyracer gem.Installing therubyracer did not work for me. But Node.js installed quickly, like so:$ sudo apt-get install nodejsNow that we have a JavaScript runtime, Rails runs successfully.Side note: If you want to see what a Node.js-equipped Bone can do, checkout OpenROV.ConclusionBottom line: Ruby, Rails, and Ubuntu can run successfully on BeagleBone Black, with Node.js as a bonus.The BeagleBone Black is a cool option for running Ubuntu. Yes, it runs slower than a typical laptop. But it runs, and at $45 each we can build a cluster of Bones if we’re concerned about performance!What an amazing bundle of technology.You might also be interested in Ruby on Raspberry Pi.",
      "url": " /blog/2014/01/06/beaglebone-black-ubuntu-ruby-rails-part-2/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2014-01-02-beaglebone-black-ubuntu-part-1": {
      "title": "BeagleBone Black Running Ubuntu: Part1",
      "content"	 : "                The above screenshot shows a BeagleBone Black running Ubuntu, Ruby, and Rails. Why Ubuntu? The Bone comes pre-installed with Ångström, and it boots as soon as you unbox it. Why not stick with Ångström?My opinion: The factory standard is fine, but it’s always good to have options. Here’s why I decided to try Ubuntu on the BeagleBone Black…  Ubuntu documentation is plentiful. Books, blogs, and videos are readily available.  The Ubuntu community is huge. When a dev runs into an Ubuntu-related snag, it’s likely that another dev has encountered a similar problem, and they can collaborate on a solution.  Ubuntu is the distro that I’m most familiar with. WisdomGroup uses Ubuntu for multiple projects. With a common operating system, knowledge gained in one environment is immediately useful in another.  Prepping for Parallella, the 64-core single-board computer that will cost about two hundred bucks. The Parallella is currently in short supply. When it becomes available, it will run Ubuntu. Experience with other single-board computers, especially those running Ubuntu, will prove useful.This article will show how to install Ubuntu on the BeagleBone Black. Gotchas will be pointed out along the way. Where possible, I will explain the reasons behind my decisions so that you can make different choices if you like.For a comparable examination of the Raspberry Pi, take a look at Ruby on Raspberry Pi.First Gotcha: Ubuntu 13 on the BoneAs of this writing, Ubuntu 12 runs well on the BeagleBone Black, but Ubuntu 13 does not. My Ubuntu 13 installation appeared to be successful, but the Ubuntu 13 GUI hung up immediately after login. The Ubuntu 13 command line interface worked fine.A quick search on Google reveals that others encountered similar roadblocks with version 13. One successful Bone/13 installation was used via SSH, not interactively via keyboard and GUI. Hopefully this will change with future updates. Or, since we’re dealing in the open source world, maybe I can pitch in and help.Due to the issues encountered with version 13, everything in this article will focus on Ubuntu 12.Materials Needed for Installing Ubuntu 12In addition to the BeagleBone Black, the following items should be gathered before installation:  Micro SD card of at least 8GB. It’s possible to perform the installation with a 4GB card, but that won’t leave much room for Ubuntu applications.  SD card reader/writer. Recent versions of Apple’s MacBook Pro come with an SD reader/writer built in.  SD to Micro-SD card adapter. The Bone is designed for micro SD, and the MacBook Pro is designed for full-sized SD. Some micro SD packages come with the adapter.  A monitor that accepts HDMI input.  USB keyboard and mouse.  Micro HDMI to HDMI adapter. The Bone uses micro HDMI for video output, but your monitor probably uses full-sized HDMI.  External 5V power adapter for the Bone. Personally, I trust the standard 5v power input more than I trust the power provided via USB. One never knows if USB can provide sufficient (and stable) amperage for a circuit board. Power fluctuations can lead to strange behavior, including video flickering.  Ethernet cable with RJ-45 ends.  A fast internet connection.The standard sudo disclaimer applies.Homebrew RequiredHomebrew is the easiest way to install ‘nix utilities on Mac OS X. We need Homebrew in order to install some of the utilities needed to burn the SD card. The one-line Homebrew installation command is given on the  Homebrew site.Each time we use Homebrew, we run $ brew doctor and $ brew update to make sure the packages are up-to-date.$ brew doctorWarning: Your Homebrew is outdated.You haven&#39;t updated for at least 24 hours, this is a long time in brewland!To update Homebrew, run `brew update`.$ brew updateUpdated Homebrew from a2e44659 to 4c7bc9ec.$ brew doctorYour system is ready to brew.The xz Extraction UtilityDisk image files are downloaded in a compressed format. We need the xz utility in order to extract the files into something usable. If you already have Homebrew installed, this command will install xz for you.$ brew install xzTest the BeagleBone Black FirstPower up your BeagleBone Black and make sure it runs with the built-in Ångström Linux installation. One great thing about the Bone is that it will boot to the Ångström GUI straight out of the box, with no prior configuration.If the GUI boots, then you’re in good shape.If the GUI doesn’t boot, it may have been damaged in a prior experiement. Embarassing note: I started looking for a way to install Ubuntu on the Bone because I broke my Ångström installation. What can I say… I learn more from destructive experiments. Faced with a non-booting Bone, I had two choices.  Re-build Ångström.  Try something different, like Ubuntu.Option two worked well!Prep the SD CardApple’s Disk Utility is a convenient tool for wiping the SD card.  Standard warnings about any disk utility apply. Double-check everything, and make sure you’re wiping the right volume, or you could lose all of your data.Next, download the Ubuntu 12.04 image from http://armhf.com.Extract the image using the xz utility.$ xz ubuntu-precise-12.04.3-armhf-3.8.13-bone30.img.xzThe extracted image will have a .img file extension. We will use the dd utility to burn the disk image to the SD card. But first, we need to determine the designation of the SD card.Find the SD Card DesignationIn order to burn the SD card, we need to make sure we target it correctly. Here’s how to figure out which device to target.$ diskutil list will show all of the partitions mounted on the system.$ diskutil list/dev/disk0   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      GUID_partition_scheme                        *500.3 GB   disk0   1:                        EFI                         209.7 MB   disk0s1   2:                  Apple_HFS Macintosh HD            499.4 GB   disk0s2   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3/dev/disk1   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:     FDisk_partition_scheme                        *8.0 GB     disk1I happen to know that my SD Card is 8.0 GB in capacity, and my system also has a 500 GB SSD. The goal is to burn the SD card while leaving the 500 GB SSD (home of the Mac OS X operating system and all of my data) intact. From the $ diskutil list report, I can see that the SD card’s designation in my system is /dev/disk1.Note the italicized words in my system. Your system is probably different, especially if you have a DVD drive or a second hard drive. I have neither of those. The SD card’s designation will be different in each system where it is mounted depending on the number and location of the drives that are already there.Now that we know the SD card’s designation, we can unmount it. We unmount the drive (but leave the card inserted in the reader) so that it can be written with the Ubuntu disk image.$ diskutil unmountDisk /dev/disk1Unmount of all volumes on disk1 was successfulLooks like the SD card was unmounted successfully. Now we can write theUbuntu image with the dd utility.Writing the Ubuntu ImageThe following command will write the decompressed Ubuntu image to the SDcard.$ sudo dd bs=1m if=ubuntu-precise-12.04.3-armhf-3.8.13-bone30.img of=/dev/disk1Note that it may take up to an hour for the image to be written.One drawback of using the command line is that there is no gauge to tell you how much progress the utility is making. Fortunately, I stumbled upon a way to measure progress at eLinux.org. While the command line utility is running, and while that window has focus, type control-T. A few seconds later, the terminal window will show a brief activity report.Here’s a report from the first time I struck control-T …load: 2.03  cmd: dd 75608 uninterruptible 0.00u 0.54s40+0 records in39+0 records outWe can strike control-T again to receive additional updates. The numbers will tell us if we are making progress. Don’t get carried away with control-T. A watched pot never boils :-)Booting with the New SD CardThe terminal will return to the command prompt after the Ubuntu image has been written to the SD card. Now it’s time to boot with the new image.  Eject the SD card from the Mac.  Remove power from the BeagleBone Black, and insert the micro SD card.  Note the location of the “boot” button on the Bone. It’s the micro switch closest to the USB port. We will need to hold this switch down while powering up the Bone.A few notes about item #3. It takes some juggling to hold down a micro switch while plugging in power to the board. I found it easier to plug the power adapter into a powered-off surge suppressor, hold down the microswitch, and then power-on the surge suppressor with my elbow.  Sounds ridiculous, but it worked.About sixty seconds after boot, the Linux penguin appeared in the upper left corner of the Bone display. And then the login prompt appeared.Another note about the “boot” switch: It looks like the Bone will boot into the SD’s operating system (instead of the eMMC flash OS where Angstrom resides) without the micro switch if the switch was used in the previous boot. I haven’t rebooted enough times to test this thoroughly.Default Credentials for Ubuntu on BeagleBone BlackUbuntu’s default BeagleBone Black login credentials are shown here because I always end up hunting for these when I need them. It’s much easier to have information at one’s fingertips.login: ubuntupw: ubuntuEnd of Part OneThis marks the end of part one of this series about BeagleBone Black and Ubuntu.Part two covers Ruby on BeagleBone Black, with information about…  Getting the GUI running, including a disk resizing gotcha.  Installing Ruby, including a Ruby Version Manager (RVM) gotcha.  Installing Rails, and how to handle a JavaScript runtime gotcha.Stay tuned!",
      "url": " /blog/2014/01/02/beaglebone-black-ubuntu-part-1/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-12-28-disposable-electronics-in-wired-magazine": {
      "title": "Disposable Electronics in Wired Magazine",
      "content"	 : "What can we build with disposable electronics? An ad in the January 2014 issue of Wired Magazine lets the reader change the color of a Moto X smartphone by pressing a colored circle on the page. This 20-second video shows the ad in operation followed by a glimpse of the inner workings.Inner WorkingsTaking the ad apart required one simple tool, a pair of scissors. Here’s what’s inside:  Four 3-volt CR2025 lithium coin batteries. This kind of battery is commonly used to power the remote key fob for an automobile. Walgreens sells these batteries.  One tiny circuit board, about 1-inch square. I see nine resistors, four capacitors, one diode, and one application-specific integrated circuit (ASIC). The designation C0010-V1 is printed on the board. Nothing shows the board’s manufacturer.  Eleven switches in one switch assembly. The switches are connected to the circuit board via seven leads.  Three LEDs, pointed to shine light on a 3.5” x 6.5” reflecting panel.                This assembly is more expensive than a typical full-page ad, but probably not by much. Mildly amusing to play with, and fun to take apart. Yes, the advertisers succeded in grabbing my attention.Advertising ROI?A famous ad expert once remarked, “Half the money I spend on advertising is wasted. The trouble is I don’t know which half.” Is the Moto X ad useful or wasted?An observation: I played with this paper gadget for a good ten minutes and I took the thing apart before I considered reading the ad copy. Maybe the color change is too distracting for the ad to be effective? Maybe the temptation to disassemble the ad is too distracting, too.On the other hand, I’m still talking about the ad. And blogging about it. Ultimate test: How will an ad like this influence buying behavior?Beyond advertising, what else can we do with disposable electronics?",
      "url": " /blog/2013/12/28/disposable-electronics-in-wired-magazine/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-12-12-high-performance-computing-at-acm": {
      "title": "High Performance Computing at ACM",
      "content"	 : "  Anyone can build a fast CPU. The trick is to build a fast system.  ~ Seymour CrayThe Chicago chapter of the Association for Computing Machinery (Chicago ACM) hosted a lecture titled Supercomputing and You yesterday evening. The talk was delivered by Sharan Kalwani of Fermilab. Kalwani’s background blends mechanical engineering and computer science with decades of high performance computing experience.10x =&amp;gt; High Performance ComputingKalwani began his talk by drawing a distinction between supercomputing and high performance computing (HPC). Supercomputing is the buzzword that everyone knows, but the word implies that the designers are focused only on improving CPU performance. Such narrow focus could cause us to ignore important subsystems. For example, if engineers focus strictly on CPU performance, applications that are CPU-bound will quickly encounter I/O bottlenecks. High performance computing takes the entire system into account: CPU, I/O, cache, memory… anything that can influence performance.This article will use the terms supercomputing and high performance computing interchangably because we are discussing the field in general. In an engineering document, the distinction would be more important.By definition, supercomputers perform at least ten times faster than the current state-of-the art. The definition is a moving target. The processor in today’s smartphone would have been considered a high performance computer a decade ago.The First SupercomputerSeymour Cray is regarded as the father of the supercomputer. Cray cobbled together the first supercomputer using off-the-shelf components of the day and his unique ideas about computer architecture.For example, Cray observed that the speed of an electrical signal was one bottleneck in computer performance. Electrical signals travel at the speed of light. Light can travel roughly one foot in one nanosecond.  Therefore, Cray decided that all internal cables in his new system would be less than a foot in length. No input would need to wait more than a nanosecond for a signal.The 1972-era Cray supercomputer ran at a clock speed of 80MHz. It used a 64-bit word size. As a point of comparison, a 1972-era business mainframe ran at 4MHz with a 16-bit word size.Supercomputers… So What?Why do we need to spend time and money on high performance computers?  How does the general public benefit?HPC enables us to solve problems that elude typical computers. For example:      Auto safety testing. Kalwani spent several years using HPC to run simulated crash tests for General Motors. A physical crash test, one in which the car is destroyed, costs $500k per car. The same test can be run in a simulator for $5k. Engineers still need to test a physical car at the end of the testing cycle, but the number of cars destroyed is drastically reduced. The business advantage of HPC-simulated tests is clear.        Nuclear testing. It is very expensive (measured both in dollars and in human lives) to test a nuclear power plant. Fortunately, scientists know enough about nuclear behavior to create realistic simulations. Testing via simulation helps to manage costs and reduce accidents.        Weather forecasting. The first supercomputers needed three days to predict the weather for tomorrow. What good is a 2-day-old weather forecast? A good forecast can save lives by telling people to evacute before a life-threatening natural disaster. Today’s supercomputers can produce accurate weather forecasts while the reader still has time to take action.        Bioinformatics. When scientists can reliably simulate drug behavior before live human testing, medical treatments can be improved and lives can be saved.        Energy exploration. As long as people depend on fossil fuels, new sources need to be discovered in a timely and cost-effective way.  Supercomputers can process seismic data quickly and with sufficient granularity to tell prospectors where to drill.  The bottom line: High performance computers deliver a return on investment that far outweighs their cost.Trickle Down TechnologyMany of the advances that we enjoy on today’s laptops were invented by HPC architects. Kalwani shared one example: Cray invented the solid state disk (SSD) when mechanical disk drives proved to be a bottleneck. Can you imagine what an SSD must have cost in 1982 when it was invented? Today, SSDs are standard equipment on many laptops.Who Has the Fastest Supercomputer?Top500.org lists the fastest supercomputers on the planet, ordered by number of floating point operations per second (FLOPS). The race to be the fastest is highly competitive, so check the list for the latest champion.There are those who believe that the Top 500 list is missing a few names. Some governments or companies might not want to publicize their HPC skills.Speed vs. PowerSupercomputers gulp electricity. Rule of thumb: One megawatt of electricity used over the course of one year costs $1 million. The fastest supercomputer in the world uses 17 megawatts of electricity, so its owners have an annual electric bill of $17 million dollars.The Green 500 list recognizes the most energy efficient supercomputers in the world.The Fourth ParadigmKalwani closed the historical section of his talk with a discussion of The Fourth Paradigm of discovery. The concept comes from a collection of essays published by Microsoft Press. As of this writing, a free PDF of the book is available from Microsoft Research.The book’s introduction posits that there have been four paradigms of human scientific discovery:      Empirical. Started a thousand years ago. Science was all about describing natural phenomena.        Theoretical. Started a few hundred years ago. Scientific understanding is achieved via models and generalizations.        Computational. Started a few decades ago. Scientists seek understanding by simulating complex phenomena using computer models.        Data Exploration (eScience). Starting now. Scientists now have the technology to capture and store huge quantities of data, inexpensively and indefinitely. Software will “look” for trends in the data using statistical models. The software will identify trends in the data, and point them out for further investigation.  One example of the Fourth Paradigm in action: Recent discoveries of sub-atomic particles were initiated by eScience. Software running on high performance computers identified trends, and the scientists followed up with deeper investigation. Discoveries followed after that.Businesses have led the way in extracting trends from mountains of data. This path offered limited results for scientists because computers were too slow to handle scientific data in a timely fashion. Partial differential equations eat many CPU cycles!High performance computing opens up a new universe of data insight for scientists and engineers.The Future of HPCKalwani ended the talk by looking into his crystal ball and telling us about the future of HPC. A few trends on the horizon:      Power consumption issues will dominate discussions. High performance computers are terribly inefficient. Either we need to find a free, unlimited supply of energy (unlikely) or we must design supercomputers that gulp less power.        GPGPUs. General purpose graphics processing units are already used for non-graphics applications, like Bitcoin mining. As more applications are discovered for the devices, faster GPGPUs will follow.        ARM. Advanced Risc Machine processors use less power and their performance continues to increase. Could ARM hold the key to power reduction in high performance computing?        Rex Parallella. Fresh from last month’s Supercomputing Conference: Rex Computing is using Parallella boards to build low-energy high performance computing clusters.        Quantum computing. Kalwani ran out of time as he was covering this item, but he shared enough to spark my interest. He explained quantum computing by using an analogy: Quantum computing is to digital computing as digital computing is to the abacus. The degree of advancement is that dramatic. D-Wave is one company exploring this area.  ConclusionThank you Sharan Kalwani for presenting, and thank you Chicago ACM for hosting.AcknowledgementsThe photo at the top of the article shows a Cray-1, the first supercomputer, on display at the Swiss Federal Institute of Technology (EPFL) in Lausanne. Some of the original panels have been replaced with plexiglass.",
      "url": " /blog/2013/12/12/high-performance-computing-at-acm/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-12-06-homebrew-ruby-and-git": {
      "title": "Homebrew, Ruby, and Git",
      "content"	 : "I encountered some interesting behavior between Homebrew and Ruby this afternoon. I can describe what happened, but I don’t yet understand why. Perhaps another member of the dev community can shed some light.Upgrading to Git 1.8.5Earlier today I learned that Git 1.8.5 was available. So I decided to upgrade. Since I use Homebrew for package management, it was time for $ brew doctor and $ brew update as well.$ brew doctorError: Homebrew doesn&#39;t know what compiler versions ship with your versionof Xcode (5.0.2). Please `brew update` and if that doesn&#39;t help, filean issue with the output of `brew --config`:  https://github.com/mxcl/homebrew/issuesThanks!Warning: Your Homebrew is outdated.You haven&#39;t updated for at least 24 hours, this is a long time in brewland!To update Homebrew, run `brew update`.~/Code/Ruby/apps$ $ brew doctor has spoken. Time to update Homebrew.Homebrew First. Git Later.Updating Homebrew is as simple as $ brew update, right?~$ brew updateWarning: Could not tap homebrew/dupes/ant over mxcl/master/antWarning: Could not tap homebrew/dupes/cvs over mxcl/master/cvsError: undefined method `to_sym&#39; for nil:NilClassPlease report this bug:    https://github.com/mxcl/homebrew/wiki/troubleshooting/usr/local/Library/Homebrew/cmd/update.rb:123:in `report&#39;/usr/local/Library/Homebrew/cmd/update.rb:121:in `each_line&#39;/usr/local/Library/Homebrew/cmd/update.rb:121:in `report&#39;/usr/local/Library/Homebrew/cmd/update.rb:35:in `update&#39;/usr/local/Library/brew.rb:95:in `send&#39;/usr/local/Library/brew.rb:95~/Code/Ruby/apps$ $ brew update choked. Further, Homebrew said that I should report a bug. But something smelled fishy. I decided to try running Homebrew under Ruby 2.0.0 instead of Ruby 1.9.3, the default on my system. Running RVM makes bouncing between Ruby versions a snap.~$ rvm use 2.0.0That did the trick. $ brew update worked fine, and $ brew doctorconfirmed it.~$ brew updateUpdated Homebrew from 69a83176 to 691c72bf.… ~$ brew doctorYour system is ready to brew.Back to GitNow that the yak is well-shaved, we’re ready to upgrade Git.~$ brew upgrade git==&amp;gt; Upgrading 1 outdated package, with result:git 1.8.5.1==&amp;gt; Upgrading git==&amp;gt; Downloading https://downloads.sf.net/project/machomebrew/Bottles/git-1.8.5.1.mountain_lion.bottle.tar.gz######################################################################## 100.0%==&amp;gt; Pouring git-1.8.5.1.mountain_lion.bottle.tar.gz==&amp;gt; CaveatsThe OS X keychain credential helper has been installed to:  /usr/local/bin/git-credential-osxkeychainThe &#39;contrib&#39; directory has been installed to:  /usr/local/share/git-core/contribBash completion has been installed to:  /usr/local/etc/bash_completion.dzsh completion has been installed to:  /usr/local/share/zsh/site-functions==&amp;gt; Summary  /usr/local/Cellar/git/1.8.5.1: 1333 files, 30MMission accomplished. Git has been upgraded to 1.8.5.~$ git --versiongit version 1.8.5.1~$ Why This MattersI’m posting this article as a note to my future self. Error messages sometimes lie. They don’t mean to lie, but an error messsage can only give you its best guess based on what it thinks is happening on your system. It’s up to the developer to sniff out the rest of the clues.After decades in this industry, I’m still learning this lesson :-)",
      "url": " /blog/2013/12/06/homebrew-ruby-and-git/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-12-02-amazon-guerrilla-marketing": {
      "title": "Amazon&apos;s Guerrilla Marketing",
      "content"	 : "Last night’s episode of 60 Minutes featured an interview with Jeff Bezos, CEO of Amazon. The timing was perfect for Amazon. Black Friday was a few days ago. Cyber Monday is today. Online retailers want to be top-of-mind when people are inclined to spend money.Amazon’s Surprise: DronesBezos unveiled a surprise for interviewer Charlie Rose: Amazon Prime Air, a service that will deliver most Amazon products in thirty minutes or less using a fleet of octocopter drones.                Guerrilla MarketingJay Conrad Levinson, author of Guerrilla Marketing, would applaud this move by Amazon. Amazon Prime Air is two years away at the earliest. The flying drones require Federal Aviation Administration (FAA) approval, and that takes time. By unveiling the drones now, before approval, Amazon reaps several benefits:  Buzz. Everybody is talking about Amazon on Cyber Monday.  Political influence. Some of the people feeling the buzz are FAA officials.  Continued top-of-mind awareness. Long after Cyber Monday, the excitement of the drone idea will carry on.Congrats to the Amazon team for a well-executed Guerrilla Marketing move.",
      "url": " /blog/2013/12/02/amazon-guerrilla-marketing/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-11-30-specialized-knowledge-and-the-courage-to-execute": {
      "title": "Specialized Knowledge and the Courage to Execute",
      "content"	 : "Teenagers are a tough audience. If you have ever spoken to a youth group, you know the challenge: Speak about something important without putting the youth to sleep. Tall order.Three StoriesBoy Scout Troop 534 “Hey!” asked me to speak at the Troop’s annual reunion breakfast this year.  I approached them with three stories centered around the theme of Specialized Knowledge and the Courage to Execute. What a boring title! But the three stories appealed to the group. Here’s a summary of the first story:  A tractor maker takes drastic action when when Enzo Ferrari (creator of the Ferrari sports car) pisses him off.Here’s the 11-minute video:GratitudeThis event was a big deal for me because I grew up in Troop 534 “Hey!”, I currently serve as one of the adult leaders, and the breakfast organizers normally invite an outsider to speak. Why listen to a speaker who you see all the time?I took the speaking invitation as an opportunity to assemble some new material. Thank you scouts, parents, and leaders for having me.",
      "url": " /blog/2013/11/30/specialized-knowledge-and-the-courage-to-execute/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-11-25-awesome-print-motion-for-rubymotion": {
      "title": "awesome_print_motion for RubyMotion",
      "content"	 : "The ProblemLet’s say we’re building a version of Atari’s Pong in RubyMotion. We’re debugging an issue with the paddles; they don’t line up the way we want them to. Time to examine the playing field via the RubyMotion console.pong-rm $ rakeMouse over the playing field and Command-click to grab the entire playing field object in the RubyMotion console. Confirm that you grabbed the object by typing self at the console prompt.(UIView(#9d820c0, [[0.0, 0.0], ...)&amp;gt; self=&amp;gt; UIView(#9d820c0, [[0.0, 0.0], [480.0, 320.0]]), child of UIView(#c876920)And then, to see what objects are on the playing field, useself.subviews to show the subviews array of the current object.(UIView(#9d820c0, [[0.0, 0.0], ...)&amp;gt; self.subviews=&amp;gt; [UIView(#9d82430, [[357.0, 175.0], [50.0, 50.0]]), child ofUIView(#9d820c0), PaddleView(#9d82580, [[410.0, 190.0], [20.0, 100.0]]),child of UIView(#9d820c0), PaddleView(#9d82970, [[10.0, 190.0], [20.0,100.0]]), child of UIView(#9d820c0), ScoreLabel(#9d82a80, [[110.0, 9.0],[20.0, 42.0]], text: &quot;1&quot;), child of UIView(#9d820c0),ScoreLabel(#9d83c90, [[350.0, 9.0], [20.0, 42.0]], text: &quot;0&quot;), child ofUIView(#9d820c0)](UIView(#9d820c0, [[0.0, 0.0], ...)&amp;gt;This blob of text is difficult for the human brain to parse.Solution: awesome_print_motionNow, let’s try it with the awesome_print_motion gem.(UIView(#9d820c0, [[0.0, 0.0], ...)&amp;gt; ap(self.subviews)[    [0] UIView(#9d82430, [[308.0, 118.0], [50.0, 50.0]]), child of UIView(#9d820c0),    [1] PaddleView(#9d82580, [[410.0, 190.0], [20.0, 100.0]]), child of UIView(#9d820c0),    [2] PaddleView(#9d82970, [[10.0, 190.0], [20.0, 100.0]]), child of UIView(#9d820c0),    [3] ScoreLabel(#9d82a80, [[110.0, 9.0], [39.0, 42.0]], text: &quot;61&quot;), child of UIView(#9d820c0),    [4] ScoreLabel(#9d83c90, [[350.0, 9.0], [20.0, 42.0]], text: &quot;0&quot;), child of UIView(#9d820c0)]=&amp;gt; nil(UIView(#9d820c0, [[0.0, 0.0], ...)&amp;gt;Much easier to read. The structure of the subviews array is clear. Each element of the array has an easy-to-read index. Debugging time is reduced.How to Install awesome_print_motionRubyMotion uses bundler. So we start by refering to awesome_print_motion in our gemfile.gem &#39;awesome_print_motion&#39;In the app’s Rakefile, there are two possible ways to proceed. The preferred way is to use the following lines to tell the app to require every gem mentioned in Bundler’s Gemfile:begin  require &#39;bundler&#39;  Bundler.requirerescue LoadErrorendThe older way is to manually add a require statement to the Rakefile.require &#39;ap&#39;Personally, I prefer the newer way because it automaticallyrequires all of the gems mentioned in the Gemfile. The odds of atypo-induced error are reduced.How to Use awesome_print_motionTo use the new gem, start the app and explore away. Any time you want torun output through the awesome_print_motion gem, send the code as aparameter to the ap method like so…&amp;gt; ap(self.subviews)… and the output will be easier to read.AcknowledgementsThank you Michael Dvorkin for adding RubyMotion support to your awesome_print gem.",
      "url": " /blog/2013/11/25/awesome-print-motion-for-rubymotion/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-11-23-using-rubymotion-to-build-something-useful": {
      "title": "Using RubyMotion to Build Something Useful",
      "content"	 : "The Chicago RubyMotion User Group held its inaugural meeting this week. Thank you Dave Astels for organizing the group and for asking me to present. Thanks also to Dev Bootcamp for hosting the event.Slides are embedded here:Doing RubyMotion in Chicago? Be There!If you’re using RubyMotion and you’re located in the Chicago area, check out the Chicago RubyMotion group. The group attracts devs who are running into the same challenges as you. Devs who work with other devs tend to learn more over time.See you there!",
      "url": " /blog/2013/11/23/using-rubymotion-to-build-something-useful/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-11-11-os-x-and-rubymotion-finishing-up": {
      "title": "OS X and RubyMotion, Finishing Up",
      "content"	 : "                There is something I neglected to cover in a previous blog post, Building an OS X App With RubyMotion. Once you’ve written the OS X app, where do you find the executable, and how do you add it to the Applications folder on the Mac?Long-time Mac enthusiasts may already know how to do this. The information is included here for completeness.Find, Drag, and DropFirst thing to note: A Mac app named [random-app].app is actually a directory, even though it appears to be a file when viewed in the Applications folder. If you’re curious, right-click on any app in the Applications folder and choose Show Package Contents from the speed menu.After compilation, RubyMotion puts all of the executables in the app’s build/ directory. Using Finder, drag the folder named [your-app-name].app into the Applications folder.Or, if you prefer the command line…$ cd [root-directory-of-your-app]$ cp build/MacOSX-10.8-Development/[your-app-name].app /Applications$ It doesn’t really matter whether we copy the file or move it.  RubyMotion creates a new one with every build, when we type rake.Launch at LoginI want the EjectDisks utility to be always available, so it would be good to have it launch automatically at login. That behavior is managed in the Users and Groups preference pane, shown below:                Click the + sign, navigate to the app you want to launch at login time (in this case, EjectDisks) and select it. Done.",
      "url": " /blog/2013/11/11/os-x-and-rubymotion-finishing-up/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-11-10-a-portable-hack-for-parallella": {
      "title": "A Portable Hack for Parallella",
      "content"	 : "                Beaglebone Black, Raspberry Pi, and Parallella are three small, powerful Linux-based computers. But in order to make these devices truly portable, we need a way to carry a monitor and keyboard along. This article describes one hack that works.Inspiration in a SuitcaseThe HP 5036 Microprocessor Lab gave me my first exposure to assembler language. I was eighteen, working my first software internship, and loving every minute of it. When I devised ways to complete my regular work faster than management expected, I had some time on my hands. So I spent time learning assembler with the HP 5036.                The entire 5036 fits in a suitcase… how cool is that! Here’s how the 5036 works:  Start by writing assembler-level code by hand on paper.  Grab the reference book for the microprocessor running on theboard, Intel 8080.  For each assembler-level command, find the corresponding 2-digithexidecimal operation code.  Key the op code into the 5036 by hand.  Run the program.Working with the 5036 was addictive in a positive way. In a subsequent job, where I wrote assembler to drive hardware devices, I was ready.Portability NeededFast forward a few decades. We now have the Raspberry Pi, BeagleBone Black, and Parallella. Wonderful devices with one flaw in common: No portability. That’s when I had a flashback to my days with the 5036.I bought a $35 technician box from Home Depot and I ripped out the insides. Micro Center had 720p LCD monitors on sale for $90, so I bought one of those. I didn’t want to spend the extra bucks for a 1080p LCD because you never know how something like this might work out! Finally, I topped everything off with a $25 keyboard/trackpad combo from Amazon.  The result appears in the photo at the top of this article. Special thanks to Ericka [last name unknown] from Home Depot who gave me tons of ideas on how to securely fasten the monitor to the case.Why?Why did I spend the time and money to assemble this kit? It’s all about learning. Devs learn more when we interact with other devs - people who are learning some of the same things that we’re wrestling with. And sometimes the things we need to learn are too new for books.By carrying my Raspberry Pi, BeagleBone Black, and Parallella with me in a portable unit, I can share my experiences with other devs and learn more in the process. Everybody wins when that happens.Thanks SCNA!The organizers of Software Craftsmanship North America (SCNA) gave me the opportunity to present this story as a lightning talk at the conference. Slides are here:Thank you SCNA! As I shared with the other devs at SCNA, I will gladly post my mistakes and gotchas here for people who want to build a unit like this. Let’s build!",
      "url": " /blog/2013/11/10/a-portable-hack-for-parallella/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-11-01-building-an-os-x-app-with-rubymotion": {
      "title": "Building an OS X App With RubyMotion",
      "content"	 : "                RubyMotion’s OS X support enabled me to solve a small problem yesterday.  Here’s the story.Background on BackupNo matter how much money we spend on computers, the data we create is worth more. The best data protection employs several levels of redundancy.My backup system starts with Apple’s Time Machine, which handles first level backups painlessly in the background. Time machine is even more effective when multiple disks are used. I like to combine that with online solutions. Redundancy is a good thing.USB-attached drives work great with Time Machine. I found that Time Machine was inconsistent over WiFi, and when it failed, troubleshooting took too much time. That was a few years ago and things have probably improved since then. I’ve never had to troubleshoot a USB-attached Time Machine drive. USB just works. Except when it doesn’t. And that’s where RubyMotion proved helpful.Disconnecting USB in a HurryMy only problem with USB-attached drives comes when I need to leave my desk in a hurry. You may have seen this message before:                All three of my USB drives are attached through a single USB hub. Yanking the cable while running for a meeting is… bad! Forgetting to eject even one of the USB drives is also bad.I solved the problem about a year ago by writing a command line tool that ejects all three drives with one double-click of an icon. Yesterday I deciced to improve my command line tool with RubyMotion.Ejecting in a HurryEjectDisks is a simple OS X program written with the RubyMotion toolchain for Mac OS X. It uses the osx-status-bar-app-template gem created by Elliott Draper. Here’s a 10-second demo.The CodeThe latest version of the EjectDisk code is on GitHub. The app_delegate.rb file appears below.class AppDelegate  attr_accessor :status_menu  def applicationDidFinishLaunching(notification)    @app_name = NSBundle.mainBundle.infoDictionary[&#39;CFBundleDisplayName&#39;]    @status_menu = NSMenu.new    @status_item = NSStatusBar.systemStatusBar.statusItemWithLength(NSVariableStatusItemLength).init    @status_item.setMenu(@status_menu)    @status_item.setHighlightMode(true)    @status_item.setTitle(@app_name)    @status_menu.addItem createMenuItem(&quot;About #{@app_name}&quot;, &#39;orderFrontStandardAboutPanel:&#39;)    @status_menu.addItem createMenuItem(&quot;Custom Action&quot;, &#39;pressAction&#39;)    @status_menu.addItem createMenuItem(&quot;Eject Three Disks&quot;, &#39;ejectThreeDisks&#39;)    @status_menu.addItem createMenuItem(&quot;Say Something&quot;, &#39;sayDroid&#39;)    @status_menu.addItem createMenuItem(&quot;Sing&quot;, &#39;singSomething&#39;)    @status_menu.addItem createMenuItem(&quot;Greetings&quot;, &#39;greetings&#39;)    @status_menu.addItem createMenuItem(&quot;Quit&quot;, &#39;terminate:&#39;)  end  def createMenuItem(name, action)    NSMenuItem.alloc.initWithTitle(name, action: action, keyEquivalent: &#39;&#39;)  end  def pressAction    alert = NSAlert.alloc.init    alert.setMessageText &quot;Action triggered from status bar menu&quot;    alert.addButtonWithTitle &quot;OK&quot;    alert.runModal  end  def sayDroid    %x(say -v cello droid)  end  def singSomething    %x(say -v cello da da da da da da da da da da da da da da da da da da da da da da da da da da)  end  def greetings    %x(say -v cello Greetings to the members of Chippewa Valley Code Camp &amp;amp;)    alert = NSAlert.alloc.init    alert.setMessageText &quot;Greetings to the members of Chippewa Valley Code Camp!&quot;    alert.addButtonWithTitle &quot;OK&quot;    alert.runModal  end  def ejectThreeDisks    alert = NSAlert.alloc.init    response = %x(/usr/sbin/diskutil eject SiiGBlack) + &quot;n&quot;    response += %x(/usr/sbin/diskutil eject Ultra3TB) + &quot;n&quot;    response += %x(/usr/sbin/diskutil eject WDSilver) + &quot;n&quot;    alert.setMessageText response    alert.addButtonWithTitle &quot;OK&quot;    alert.runModal  endendNext StepsNot everything in the EjectDisks tool is business-related. Do we really need to include a greeting to the members of the Chippewa Valley Code Camp?  Yes, we do!On the serious side, the app should handle disk ejection as a background process. It’s not good to tie up the system for a simple task. Look for a forked process in a future version of the app.Update: This article should have included instructions on how to run the executable on any Mac OS X system without having RubyMotion installed. The omission is corrected in a later blog post, OS X and RubyMotion, Finishing Up.",
      "url": " /blog/2013/11/01/building-an-os-x-app-with-rubymotion/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-10-31-tohtml-using-vim-code-snippets-in-keynote-presentations": {
      "title": ":TOhtml - Using Vim Code Snippets in Keynote Presentations",
      "content"	 : "When giving a presentation to a group of developers, you might want to add blocks of code to your slides. It’s helpful to maintain the syntax highlighting while you copy the code. :TOhtml offers a quick way to copy code snippets from Vim to Keynote, while syntax highlighting remains intact.Start With a Block of CodeFire up Vim and drop the block of code you want to convert into a new Vim buffer. In this example, I’ve created a sample RubyMotion OS X app, and I want to show the contents of the Rakefile.# -*- coding: utf-8 -*-$:.unshift(&quot;/Library/RubyMotion/lib&quot;)require &#39;motion/project/template/osx&#39;begin  require &#39;bundler&#39;  Bundler.requirerescue LoadErrorendMotion::Project::App.setup do |app|  # Use `rake config&#39; to see complete project settings.  app.name = &#39;EjectDisks&#39;  app.info_plist[&#39;LSUIElement&#39;] = trueendNext, visually select the lines you want to convert. You can do this with shift-V, or with the (gasp!) mouse. Or if you want to convert the entire file, enter :TOhtml in the command area. Vim will convert the highlighted text into HTML in a new buffer. Here’s the result:&amp;lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&amp;gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot;&amp;gt;&amp;lt;title&amp;gt;~/Code/Ruby/RubyMotion/EjectDisks/Rakefile.html&amp;lt;/title&amp;gt;&amp;lt;meta name=&quot;Generator&quot; content=&quot;Vim/7.4&quot;&amp;gt;&amp;lt;meta name=&quot;plugin-version&quot; content=&quot;vim7.4_v1&quot;&amp;gt;&amp;lt;meta name=&quot;syntax&quot; content=&quot;ruby&quot;&amp;gt;&amp;lt;meta name=&quot;settings&quot; content=&quot;number_lines,use_css,no_foldcolumn,expand_tabs,line_ids,prevent_copy=&quot;&amp;gt;&amp;lt;meta name=&quot;colorscheme&quot; content=&quot;darkspectrum&quot;&amp;gt;&amp;lt;style type=&quot;text/css&quot;&amp;gt;&amp;lt;!--pre { font-family: monospace; color: #efefef; background-color: #2a2a2a; }body { font-family: monospace; color: #efefef; background-color: #2a2a2a; }* { font-size: 1em; }.String { color: #fce94f; }.Statement { color: #ffffff; font-weight: bold; }.PreProc { color: #ffffff; font-weight: bold; }.LineNr { color: #535353; background-color: #202020; padding-bottom: 1px; }.Comment { color: #8a8a8a; }.Type { color: #8ae234; font-weight: bold; }.Special { color: #e9b96e; }.Identifier { color: #729fcf; }.Constant { color: #ef5939; }--&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;script type=&#39;text/javascript&#39;&amp;gt;&amp;lt;!--/* function to open any folds containing a jumped-to line before jumping to it */function JumpToLine(){  var lineNum;  lineNum = window.location.hash;  lineNum = lineNum.substr(1); /* strip off &#39;#&#39; */  if (lineNum.indexOf(&#39;L&#39;) == -1) {    lineNum = &#39;L&#39;+lineNum;  }  lineElem = document.getElementById(lineNum);  /* Always jump to new location even if the line was hidden inside a fold, or   * we corrected the raw number to a line ID.   */  if (lineElem) {    lineElem.scrollIntoView(true);  }  return true;}if (&#39;onhashchange&#39; in window) {  window.onhashchange = JumpToLine;}--&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body onload=&#39;JumpToLine();&#39;&amp;gt;&amp;lt;pre id=&#39;vimCodeElement&#39;&amp;gt;&amp;lt;span id=&quot;L1&quot; class=&quot;LineNr&quot;&amp;gt; 1 &amp;lt;/span&amp;gt;&amp;lt;span class=&quot;Comment&quot;&amp;gt;# -*- coding: utf-8 -*-&amp;lt;/span&amp;gt;&amp;lt;span id=&quot;L2&quot; class=&quot;LineNr&quot;&amp;gt; 2 &amp;lt;/span&amp;gt;&amp;lt;span class=&quot;Identifier&quot;&amp;gt;$:&amp;lt;/span&amp;gt;.unshift(&amp;lt;span class=&quot;Special&quot;&amp;gt;&amp;amp;quot;&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;String&quot;&amp;gt;/Library/RubyMotion/lib&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;Special&quot;&amp;gt;&amp;amp;quot;&amp;lt;/span&amp;gt;)&amp;lt;span id=&quot;L3&quot; class=&quot;LineNr&quot;&amp;gt; 3 &amp;lt;/span&amp;gt;&amp;lt;span class=&quot;PreProc&quot;&amp;gt;require&amp;lt;/span&amp;gt; &amp;lt;span class=&quot;Special&quot;&amp;gt;&#39;&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;String&quot;&amp;gt;motion/project/template/osx&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;Special&quot;&amp;gt;&#39;&amp;lt;/span&amp;gt;&amp;lt;span id=&quot;L4&quot; class=&quot;LineNr&quot;&amp;gt; 4 &amp;lt;/span&amp;gt;&amp;lt;span id=&quot;L5&quot; class=&quot;LineNr&quot;&amp;gt; 5 &amp;lt;/span&amp;gt;&amp;lt;span class=&quot;Statement&quot;&amp;gt;begin&amp;lt;/span&amp;gt;&amp;lt;span id=&quot;L6&quot; class=&quot;LineNr&quot;&amp;gt; 6 &amp;lt;/span&amp;gt;  &amp;lt;span class=&quot;PreProc&quot;&amp;gt;require&amp;lt;/span&amp;gt; &amp;lt;span class=&quot;Special&quot;&amp;gt;&#39;&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;String&quot;&amp;gt;bundler&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;Special&quot;&amp;gt;&#39;&amp;lt;/span&amp;gt;&amp;lt;span id=&quot;L7&quot; class=&quot;LineNr&quot;&amp;gt; 7 &amp;lt;/span&amp;gt;  &amp;lt;span class=&quot;Type&quot;&amp;gt;Bundler&amp;lt;/span&amp;gt;.require&amp;lt;span id=&quot;L8&quot; class=&quot;LineNr&quot;&amp;gt; 8 &amp;lt;/span&amp;gt;&amp;lt;span class=&quot;Statement&quot;&amp;gt;rescue&amp;lt;/span&amp;gt; &amp;lt;span class=&quot;Type&quot;&amp;gt;LoadError&amp;lt;/span&amp;gt;&amp;lt;span id=&quot;L9&quot; class=&quot;LineNr&quot;&amp;gt; 9 &amp;lt;/span&amp;gt;&amp;lt;span class=&quot;Statement&quot;&amp;gt;end&amp;lt;/span&amp;gt;&amp;lt;span id=&quot;L10&quot; class=&quot;LineNr&quot;&amp;gt;10 &amp;lt;/span&amp;gt;&amp;lt;span id=&quot;L11&quot; class=&quot;LineNr&quot;&amp;gt;11 &amp;lt;/span&amp;gt;&amp;lt;span class=&quot;Type&quot;&amp;gt;Motion&amp;lt;/span&amp;gt;::&amp;lt;span class=&quot;Type&quot;&amp;gt;Project&amp;lt;/span&amp;gt;::&amp;lt;span class=&quot;Type&quot;&amp;gt;App&amp;lt;/span&amp;gt;.&amp;lt;span class=&quot;Statement&quot;&amp;gt;setup&amp;lt;/span&amp;gt; &amp;lt;span class=&quot;Statement&quot;&amp;gt;do&amp;lt;/span&amp;gt; |&amp;lt;span class=&quot;Identifier&quot;&amp;gt;app&amp;lt;/span&amp;gt;|&amp;lt;span id=&quot;L12&quot; class=&quot;LineNr&quot;&amp;gt;12 &amp;lt;/span&amp;gt;  &amp;lt;span class=&quot;Comment&quot;&amp;gt;# Use `rake config&#39; to see complete project settings.&amp;lt;/span&amp;gt;&amp;lt;span id=&quot;L13&quot; class=&quot;LineNr&quot;&amp;gt;13 &amp;lt;/span&amp;gt;  app.name = &amp;lt;span class=&quot;Special&quot;&amp;gt;&#39;&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;String&quot;&amp;gt;EjectDisks&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;Special&quot;&amp;gt;&#39;&amp;lt;/span&amp;gt;&amp;lt;span id=&quot;L14&quot; class=&quot;LineNr&quot;&amp;gt;14 &amp;lt;/span&amp;gt;  app.info_plist[&amp;lt;span class=&quot;Special&quot;&amp;gt;&#39;&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;String&quot;&amp;gt;LSUIElement&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;Special&quot;&amp;gt;&#39;&amp;lt;/span&amp;gt;] = &amp;lt;span class=&quot;Constant&quot;&amp;gt;true&amp;lt;/span&amp;gt;&amp;lt;span id=&quot;L15&quot; class=&quot;LineNr&quot;&amp;gt;15 &amp;lt;/span&amp;gt;&amp;lt;span class=&quot;Statement&quot;&amp;gt;end&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;lt;!-- vim: set foldmethod=manual : --&amp;gt;Save the new buffer as ~/Desktop/convertedstuff.html or any other file name that you choose. In this case, I chose::w ~/Desktop/convertedrakefile.htmlOpen the converted file in a web browser.                Copy and paste the text from the browser into Keynote.Washed Out Code?If the code looks washed out when you paste it into Keynote, you have a few alternatives:  Start with a different theme in Vim at the beginning, or  Darken/lighten the background in Keynote by using the Keynote inspector.The Finished SlideHere’s what the finished product looks like. All the clarity of syntax-highlighted text. You can even adjust font size at will using the Keynote inspector. All set for the presentation.                Easier Way?Can this process be simplified? If you know the answer, feel free to mention it in the comments below. Thanks!",
      "url": " /blog/2013/10/31/tohtml-using-vim-code-snippets-in-keynote-presentations/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-10-30-youth-program-recap-windycityrails-2013": {
      "title": "Youth Program Recap",
      "content"	 : "                Planet Earth is facing a shortage of people who make things. People like scientists, software developers, architects, and  engineers. People who use their brains and hands to make greatness happen.To increase the world’s supply of problem solvers, the organizers of WindyCityRails partnered with a group of energetic college students, the founders of Monkey Bars. The result: Together, we launched the first WindyCityRails Youth Program featuring the Arduino microcontroller.Video SummaryHere’s the launch video:ResultsThe youth who participated in the program were engaged and enthusiastic. The Monkey Bars team introduced the youth to the Arduino micro-controller and related hardware.At the end of the program, parents arrived to take their kids home, and the kids were reluctant to leave! They were absorbed in their Arduino projects. Even better, friendships formed between the youth participants.It’s exciting to think about the new companies that may have been launched that day!Next YearPlanning for next year’s WindyCityRails, including the Youth Program, is currently underway. If there are things you’d like to see in next year’s program, feel free to contact the WindyCityRails organizers.",
      "url": " /blog/2013/10/30/youth-program-recap-windycityrails-2013/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-09-02-you-can-build-things": {
      "title": "You Can Build Things",
      "content"	 : "From a video interview with Steve Jobs:  When you grow up you tend to get told that the world is the way it is, and your life is just to live your life inside the world. Try not to bash into the walls too much. Try to have a nice family life. Have fun. Save a little money.  That’s a very limited life. Life can be much broader once you discover one simple fact.  Everything around you that you call life was made up by people who are no smarter than you. And you can change it. You can influence it. You can build your own things that other people can use.  Once you learn that, you’ll never be the same again.Check out the video:",
      "url": " /blog/2013/09/02/you-can-build-things/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-08-25-madison-ruby-2013": {
      "title": "Madison Ruby 2013",
      "content"	 : "Madison Ruby 2013 was held this weekend. The conference attracts smart, intellectually curious people who are thirsty to learn more.By the way, Madison Ruby was a lot of fun, too!Speakers: Impressive and AccessibleFirst, lets cover the obvious high points so we can focus on those things that make Madison Ruby unique. Organizers Jim &amp;amp; Jen Remsik have solidified their reputation for choosing engaging, well-prepared speakers. The Remsik network of speakers includes accomplished developers from around the world. Many are published authors. Some, like Danielle Lee and Martin Atkins, excel in fields outside of software development.What the presenters have in common: All are high achievers. All are inspiring. All take time to stick around after their time on stage to interact with attendees. That kind of interaction makes the Madison Ruby community work.Community in MadisonMadison Ruby is unique in the way it brings the local community into the event. Local business and community leaders speak at the conference. The local leaders are enthusiastic about Madison and they engage attendees. One year, a farmer shared her experience growing up in a cheese-producing family business. This year, a biomedical engineering graduate of the University of Wisconsin encouraged the audience to build our creative muscles by having fun. She drove the point home with a hula-hoop demonstration, followed with a German Wheel performance by a colleague.People from other worlds speaking at a software conference… it works.Meal TimeLunch was served by the entire Madison restaurant community. Gift certificates were supplied by Engine Yard, and the certificates were redeemable for meals at local restaurants.  What a wonderful way to put serendipity to work! Attendees who just met formed clusters of lunch parties on a whim. The conversations were rich.After-Hours GatheringsThursday night’s gathering, Hype Harvest, had elements of a party but it was so much more. Hype Harvest was held on the roof of the Madison Museum of Modern Art, and it served multiple purposes. First, to raise funds for Nairobi Dev School, founded by Martha Chumo, a 19-year-old software developer in Nairobi, Kenya. Second, to give everyone a taste of the presenters to come. Third, to let the attendees gather, renew old friendships, and begin new ones.Friday night’s party was held at Bendyworks. An outdoor concert ran concurrently in the middle of the street next to the office. Bendyworks guests had the best seats around because the second floor office sits right above the musical stage.Madison Ruby and My BrotherAs an organizer of WindyCityRails, my relationship with Madison Ruby reminds me of my relationship with my brother, Edward Hightower, while we were growing up. Edward and I are one year apart, and we competed aggressively in every way: On the swim team, in the Boy Scouts, in academics… you name it. Through the competition, we learned to love and respect each other. My brother Edward is one of my closest friends. That doesn’t always happen with family!Madison Ruby competes with WindyCityRails. At the same time, I enjoy the trip to Madison because I get so much from the experience. Congratulations to the Madison Ruby organizer team for running a great event three years in a row. I plan to return next year.",
      "url": " /blog/2013/08/25/madison-ruby-2013/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-08-05-age-vs-ability": {
      "title": "Age vs. Ability",
      "content"	 : "                Age has little to do with ability. Every profession has examples of people who achieve goals even though others consider them too young or too old. People who excel in the face of stereotypes are exciting to watch.The Wall Street Journal listed some examples in a 1980s-era ad for United Technologies Corporation.  It’s what you do - not when you do it.      Ted Williams, at age 42, slammed a home run in his last official at bat.    Mickey Mantle, age 20, hit 23 home runs in his first full year in the major leagues.    Golda Meir was 71 when she became Prime Minister of Israel.    William Pitt II was 24 when he became Prime Minister of Great Britain.    George Bernard Shaw was 94 when one of his plays was first produced.    Mozart was just seven when his first composition was published.    Now, how about this? Benjamin Franklin was a newspaper columnist at 16, a framer of The United States Constitution at 81, and a scientist throughout his life.    You’re never too young or too old if you’ve got talent. Let’s recognize that age has little to do with ability.Now… let’s get back to work!",
      "url": " /blog/2013/08/05/age-vs-ability/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-07-29-why-we-need-stem": {
      "title": "Why We Need STEM",
      "content"	 : "Ignite Chicago is an evening of 5-minute talks presented by speakers who want to inspire others. Each speaker is allowed twenty slides, and the slides advance automatically every fifteen seconds. The Ignite organizers asked me to present Why We Need STEM at 1871. I’ll post the video when it becomes available. For now, check out the slides…Thank you Ignite Chicago organizers (Pete Aiello and Claire Lew) for the invitation and for hosting a great event.",
      "url": " /blog/2013/07/29/why-we-need-stem/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-07-19-petascale-tools-workshop-2013": {
      "title": "Petascale Tools Workshop 2013",
      "content"	 : "The Petascale Tools Workshop is for computer scientists who create tools that enable apps to run efficiently on the world’s fastest supercomputers. Supercomputer performance is measured in petaflops: 1015 floating point operations per second. That’s blazing speed, thousands of times faster than the fastest MacBook Pro.WisdomGroup was invited to attend the workshop because we have a client client, Texas A &amp;amp; M University, operating in the high performance computing (HPC) space. As the only non-PhD in the room, I was given a chance to exercise Pat Metheny’s be-the-worst philosophy in the extreme. The result: I learned things that will help WisdomGroup to deliver better solutions for our clients, especially the TAMU team.One Megawatt = $1,000,000.00As with other disciplines of engineering, supercomputer design is all about managing trade-offs. If you increase the clock speed, how will that affect your electrical bill? If you increase the size of the cache, how much more will you spend on hardware?Every Petascale Workshop presenter highlighted the toughest constraint: The cost of electrical power. High performance computers gulp electricity. The wattage numbers were all very abstract to me until one presenter layed out a direct one-to-one correspondence between electricity and money. One megawatt of power used over the course of a year costs one million dollars.Express a constraint in terms of money, and the abstractions melt away.The debate between the scientists was vigorous yet respectful. After hearing the 1-to-1 rule of thumb, one audience member remarked, “I know how to genererate a megawatt for only $865,000.” He then outlined his solution, a combination of coal, fossil fuels, and natural gas that would achieve the reduction. The more important point: Electricity is expensive.Re-Framing the Power ProblemThere is another way to look at the power problem. Consider it from the perspective of performance, not power. Here’s how one presenter put it: No matter where we build a supercomputer, we will only have a limited amount of power. Let’s look at the maximum available power as a constraint and go from there.Rubyists are familiar with the saying &quot;constraints are liberating&quot;, popularized by 37signals. Since power limitations are real constraints, our next step is to figure out how to extract the best results allowed within the constraints.Top FiveSupercomputer scientists are as competitive as olympic athletes. The fastest machines in the world are listed at Top500.org. Standard metrics for performance are contained in the LINPACK benchmarks.Digging DeeperSome of the biggest performance gains can be realized through more efficient software. Most supercomputers run some distribution of Linux. Some teams of researchers focus on ways to optimize the Linux kernel for supercomputing.Optimization is not a one-size-fits all process. The scientists need to consder the type of applications being run, percentage of time spent on I/O, efficiency of algorithms, and so on. Each potential optimization choice is like a node on an ever expanding tree. The choices are endless, and the seasoned expert will know where to focus for the best results.In the Ruby world, we might use tools like New Relic or Code Climate to identify hot spots in our code, places where re-factoring can reduce CPU utilization or improve I/O. HPC tools tend to be highly customizable because the users are intimately familar with their own hardware. During a lunch conversation, one team of scientists shared how they suspected a defect in hardware counters used to measure the behavior of a supercomputer under study. The instincts of the scientists proved correct, and the errant counters were replaced.ConclusionWhen smart people challenge each other to grow, great things happen. The scientists at the Petascale Tools Workshop were clearly helping each other to grow. The next few years in supercomputing will be exciting!AcknowledgementsI am grateful to the organizers of the Petascale Tools Workshop for hosting the event, and to the TAMU team for extending the invitation. Thank you both!",
      "url": " /blog/2013/07/19/petascale-tools-workshop-2013/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-07-17-pat-metheny-be-the-worst": {
      "title": "Pat Metheny: Be the Worst",
      "content"	 : "Pat Metheny encourages musicians to “be the worst” in whatever band they choose to join. Of course, he does not mean to play poorly.Rather, he encourages us to surround ourselves with the best musicians we can find so that we can learn from them. The concept is explored further in the book Apprenticeship Patterns by Dave Hoover and Ade Oshineye.I was reminded to be-the-worst while attending a conference this week, an event where I was surrounded by computer scientists with much more experience than me. I learned a lot his week. I will share details in a future post.In the meantime, I invite you to join me in a Pat Metheny learning exercise of your choice. Be the worst!",
      "url": " /blog/2013/07/17/pat-metheny-be-the-worst/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-07-15-rvm-saves-the-day-for-octopress": {
      "title": "RVM Saves the Day for Octopress",
      "content"	 : "Octopress is a lean blogging engine that happens to power RayHightower.com. Earlier today, after a quick update to the blog, I encountered the following:$ rake generate/Users/rth/.rvm/gems/ruby-1.9.3-p448@global/gems/bundler-1.2.4/lib/bundler/rubygems_integration.rb:187:in `stub_source_index170&#39;: uninitialized constant Gem::SourceIndex (NameError)     from /Users/rth/.rvm/gems/ruby-1.9.3-p448@global/gems/bundler-1.2.4/lib/bundler/rubygems_integration.rb:353:in `stub_rubygems&#39;     from /Users/rth/.rvm/gems/ruby-1.9.3-p448@global/gems/bundler-1.2.4/lib/bundler/rubygems_integration.rb:250:in `replace_entrypoints&#39;     from /Users/rth/.rvm/gems/ruby-1.9.3-p448@global/gems/bundler-1.2.4/lib/bundler/runtime.rb:14:in `setup&#39;     from /Users/rth/.rvm/gems/ruby-1.9.3-p448@global/gems/bundler-1.2.4/lib/bundler.rb:116:in `setup&#39;     from /Users/rth/.rvm/gems/ruby-1.9.3-p448@global/gems/rubygems-bundler-1.1.0/lib/rubygems-bundler/noexec.rb:77:in `setup&#39;     from /Users/rth/.rvm/gems/ruby-1.9.3-p448@global/gems/rubygems-bundler-1.1.0/lib/rubygems-bundler/noexec.rb:89:in `&amp;lt;top (required)&amp;gt;&#39;     from /Users/rth/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:116:in `require&#39;     from /Users/rth/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:116:in `rescue in require&#39;     from /Users/rth/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:122:in `require&#39;     from /Users/rth/.rvm/gems/ruby-1.9.3-p448@octopress/bin/ruby_noexec_wrapper:9:in `&amp;lt;main&amp;gt;&#39;$Not good. What happened?The ProblemFrom the error message, it appeared that my current version of Bundler was incompatible with Octopress. Googling for the error message (a favorite trick) was unhelpful. Had to try a different line of attack.The Solution: Roll BackFortunately, I use RVM. Currently installed versions of Ruby:~$ rvm listrvm rubies   jruby-1.7.3 [ x86_64 ]   macruby-0.12 [ i686 ]   ruby-1.8.7-p334 [ i686 ]   ruby-1.9.2-p290 [ x86_64 ]   ruby-1.9.3-p448 [ x86_64 ]=* ruby-2.0.0-p247 [ x86_64 ]# =&amp;gt; - current# =* - current &amp;amp;&amp;amp; default#  * - defaultSince $ rake deploy last worked with Ruby 1.9.2 on my machine, I decided to roll back to that point.$ rvm use ruby-1.9.2-p290Next, I built another octopress gemset to work with this version of Ruby, pointed to the gemset, and used Bundler to add the necessary gems.$ rvm gemset create octopress$ rvm gemset use octopress$ bundle installAnd now $ rake generate works as required.$ rake generate## Generating Site with Jekyllidentical source/stylesheets/screen.cssConfiguration from /Users/rth/Code/Ruby/apps/rayhightower/_config.ymlBuilding site: source -&amp;gt; publicSuccessfully generated site: source -&amp;gt; publicSuccess!RVM Saves the DayOnce again, RVM lets me recover quickly by shifting to an earlier version of Ruby. What’s the root cause of the problem? I don’t know at this point. But for now, the blog is up &amp;amp; running!",
      "url": " /blog/2013/07/15/rvm-saves-the-day-for-octopress/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-07-09-successful-companies-are-built-around-communities": {
      "title": "Successful Companies Are Built Around Communities",
      "content"	 : "Seth Godin is on a mission. Technology enables us to form communities that stretch beyond traditional boundaries like age and social status. Godin is convinced that revolutions within and between communities will yield huge opportunities for those who have the courage to take action. Don’t waste the revolution!I had the opportunity to hear Godin speak at a Chicago area event some time ago. This post was inspired by the presentation.Recognizing ChangeHumans rarely recognize change when we’re in the middle of it. We’re too busy living! One example from Chicago history: The advent of the skyscraper. On the surface, a skyscraper is just a tall building… big deal. However, in hindsight we can see that the skyscraper (and the Chicago school of architecture) in the late 1880s led to the expansion of cities. Cities became magnets for knowledge workers. As cities grew to accommodate more people, political power shifted away from farms and toward urban areas. Professional service firms, companies that exist to make other companies better, blossomed &amp;amp; grew. We continue to feel the effects of this trend today, over a century later.Godin believes that we are now dealing with another catalyst of change, one that is even more powerful than the skyscraper: the community. Communities are growing in size and power. Companies that know how to leverage communities are thriving.Threadless is Not About T-ShirtsFast forward to the early 21st century where we find a Chicago-area company called Threadless. If you sell a product that is easily copied, how do you differentiate yourself from the competition? By selling something that goes beyond the easily cloned product. Threadless has created a community around T-shirt sales. When building the company, the founders of Threadless looked at available technology and asked themselves, “What do people really want?” Their answers:  To be famous.  To be recognized.  To be talked about.So they built the company to fulfill these basic human needs. If you’re an artist, submit a design. If enough people vote for your design, it gets printed on a shirt. And while you’re looking around the Threadless site, you’re welcome to buy any of the other designs for about $20 each.While other t-shirt companies are trying to undercut each other on price, Threadless gives customers what they really want, customers gladly pay a premium, and everybody wins.We Don’t Pay for Software. We Pay for ResultsGodin cites 37signals as an example of a company that nutures a community of software developers by giving away software for free. 37signals extracted the Ruby on Rails web framework from their Basecamp project management tool. Rather than charge for Rails, the company makes it available to the open source community at no charge. 37signals benefits because the people who use Rails, software developers, end up trying, buying and recommending the paid products to their colleagues. This results in an upward spiral in revenue for the company. To top it off, 37signals benefits from the open source community in ways that are not easily measured in dollars.WisdomGroup is grateful to the entire Ruby on Rails community, including 37signals. We express our gratitude through ChicagoRuby and WindyCityRails. Contributing to the open source community has enabled us to develop wonderful relationships with contractors, clients, advisors… all sorts of people who have helped us to grow &amp;amp; prosper. User groups and conferences enable the software community to come together – creating something far beyond the grasp of an individual genius.The Bottom LineSeth Godin’s point: Our most successful companies are built around communities. Companies that know how to build &amp;amp; nurture communities will thrive &amp;amp; grow. Companies stuck in the old paradigm (massive advertising on a massive scale) might survive, but they will be easily eclipsed by companies that understand the value of strong communities. The revolution is here, and Seth Godin urges all of us not to waste it.Note: An earlier version of this article was published at WisdomGroup.com.",
      "url": " /blog/2013/07/09/successful-companies-are-built-around-communities/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-07-04-feeddlerpro-for-rss": {
      "title": "FeeddlerPro for RSS",
      "content"	 : "Yes, the name appears misspelled. But FeeddlerPro is my choice for RSS on iPhone and iPad. Feeddler has long been my favorite RSS reader. The developer’s decision to add support for services beyond Google Reader (Bazqux Reader, FeedHQ, and The OldReader) sealed the decision for me.Second ChoiceFeed Wrangler was a close second. I like Feed Wrangler’s minimalist approach to RSS. However, the app is missing a few features that FeeddlerPro already has baked in.Server-Side SynchronizationOf course, an RSS client is nothing without the server-side to keep everything synchronized. I chose The Old Reader because it syncs between iPhone, iPad, and web without extra fluff.Other RSS providers probably offer the same level of service. Fortunately, Feeddler makes it easy to switch between RSS services seamlessly.Google Reader is history, but RSS marches on.",
      "url": " /blog/2013/07/04/feeddlerpro-for-rss/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-06-27-pechakucha-developer-education-at-tablexi": {
      "title": "PechaKucha: Developer Education at TableXI",
      "content"	 : "PechaKucha is a concise presentation style developed in Japan. The PechaKucha format is 20x20: The presenter must share an idea in twenty slides, each displayed for exactly twenty seconds, advancing automatically. Total presentation time = six minutues, forty seconds.TableXI hosted a PechaKucha on June 13th with the theme Developer Education. I was one of six presenters invited to speak. Video:One highlight from the PechaKucha presentation: This year’s WindyCityRails will include a youth program on Thursday afternoon. Details will be announced in July. Follow @WindyCityRails for the latest news on the program.Thanks TableXI for the PechaKucha invitation, and for sponsoring WindyCityRails 2013!",
      "url": " /blog/2013/06/27/pechakucha-developer-education-at-tablexi/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-06-22-preparing-for-parallella-64-cores-installing-go-on-mac-os-x": {
      "title": "Prep for Parallella&apos;s 64 Cores: Installing Go on Mac OS X",
      "content"	 : "The idea of owning a 64-core parallel system for two hundred dollars (yes, $200.00) is exciting. Parallella is working to make that happen, perhaps as early as August 2013. To prepare for that day, I’ve decided to introduce myself to the Go language.What is Go?The Go language is designed for parallel systems. Why does Go exist? One developer sums it up this way:  Go was created at Google, by Google, for Google-size problems.~Dave AstelsGoogle writes software that runs on thousands of machines in parallel. As the number of concurrent operations increases, new challenges are encountered. Google addressed those challenges by creating Go.Why Does a Rubyist Learn Go?The team at WisdomGroup writes web and mobile apps, mainly in Ruby. So why am I learning Go?Because the best developers are polyglot. When we learn a new language, we cause ourselves to see old problems in new ways and we strengthen our ability to solve new problems. It’s like cross-training for  athletes. In the end, we become better developers.How to Install Go on Mac OS XDownload the binary of Go that matches your system but don&#39;t install it yet. You will need to complete the rest of these steps before installation. For my 2010 i5-based 15-inch MacBook Pro, I chose go1.1.1.darwin-amd64.pkg. I was concerned about the reference to amd64 in the name. But the description includes Mac OS X (x86 64-bit), and the binary worked for me.If you are upgrading from a previous version of Go, you will need to remove the old Go directory. You can do this while the new binary is downloading in the background:$ rm -rf /usr/local/goDefine the GOROOT and GOPATH environmental variables. My system uses ~/.bash_profile to define environmental variables, so I added the following lines to the end of that file:export GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/binexport GOPATH=~/Code/gocodeNote: I&#39;m using the default GOROOT variable, but your GOPATH may differ from mine. I store all of my source code in a subdirectory of home:~/Code. My complete Go directory structure is given below. By looking at my structure, you can adjust these steps to fit your system.Tell your terminal session to recognize the new environmental variables. You can either restart terminal, or if your environmental variables are in ~/.bash_profile like mine, you can do the following:$ source ~/.bash_profileRun the package installation program, go1.1.1.darwin-amd64.pkg, that was downloaded in Step 1.Now, let’s Go for a test drive.Creating a Go WorkspaceBefore you can run a Go program on your system, you have to create a Go workspace. A workspace is a directory structure that contains source code and binaries that a Go program needs in order to compile and execute.We can examine the Go Workspace on my system with the Unix tree command:~/Code/gocode$ tree.└── src    └── github.com        └── rayhightower            └── hello                └── hello.go4 directories, 1 file~/Code/gocode$ Here’s a brief description of the directories:  Code = root directory for all source code on my system. Yours may differ.  gocode = where I store all of the Go code on my system. I’m following the structure recommended by the Go documentation. I may alter this as I learn more about the language.  src = source code  github.com = directory named after the place where I store repos  rayhightower = my GitHub profile name  hello = directory named for our first Go application  hello.go = the Go source file for our Hello World programAll structure below the gocode directory is mandated by Go.Writing ‘Hello World!’ in GoGoogle’s official installation instructions include a simple ‘Hello World’ program for testing the installation. A slightly modified version appears below:package mainimport &quot;fmt&quot;func main() {    fmt.Printf(&quot;n** Hey Parallella enthusiasts: Learn Go! **n&quot;)}Compiling and RunningWe drop the code into a file called hello.go in the hello directory. To compile the program:~/Code/gocode/src/github.com/rayhightower/hello$ go install~/Code/gocode/src/github.com/rayhightower/hello$ If the Go compiler responds with a blank prompt (like above) then the program compiled successfully and a bin directory has been created inside the Go workspace. Run the tree command from the gocode directory to see how the structure has changed:~/Code/gocode$ tree.├── bin│   └── hello└── src    └── github.com        └── rayhightower            └── hello                └── hello.go5 directories, 2 files~/Code/gocode$ The newly created bin/ directory contains our hello executable. And now, let’s cut the suspense and run the program. To do so, change into the bin/ directory and type ./hello.~/Code/gocode/src/github.com/rayhightower/hello$ cd ~/Code/gocode/bin~/Code/gocode/bin$ ./hello** Hey Parallella enthusiasts: Learn Go! **~/Code/gocode/bin$ Success!It’s Not Official, But It Makes SenseAs of this writing, Parallella does not officially support the Go language. So why go through all of this trouble? Because…  A 64-core Parallella is just too cool to pass up. And it’s open source.  Go is designed for parallel systems. And it’s open source.  Open source devs are working on a Go compiler for Parallella right now. If you’re reading this, and you’re one of the devs, thank you!The Go-Parallella match makes sense. It’s always good to skate where the puck is going.Next StepsNow it’s time to explore the Go language. The real adventure begins when the 64-core Parallella arrives. Looking forward to it!AcknowledgementsI was inspired to explore Go by Blake Smith’s presentation at 8th Light. Justin Love introduced me to Parallella last month at ChicagoRuby.",
      "url": " /blog/2013/06/22/preparing-for-parallella-64-cores-installing-go-on-mac-os-x/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-06-21-replacing-google-reader-with-feed-wrangler": {
      "title": "Replacing Google Reader with Feed Wrangler",
      "content"	 : "Google Reader, the RSS product, shuts down on July 1st. I consume most news via RSS, and the ability to sync multiple RSS clients between iPhone, iPad, and desktop with Google Reader in the background saved time while keeping me informed. Finding a replacement is critical.Fortunately, strong alternatives are emerging. Feed Wrangler is a Google Reader replacement by independent developer David Smith. Here are my first impressions.ProsAfter using the service for a few hours, I can already see some things that I like. Specifically:  Minimal fluff. Other RSS clients feature big photos and page-flipping special effects. That’s not for me. Just the facts, RSS.  Easy RSS import from Google Reader. Just log in with your Google account and follow the prompts. After you import your feeds into Feed Wrangler’s web app, you will never need Google Reader again.  Reasonable cost. The Feed Wrangler service costs $19/year. Google dropped Reader because they couldn’t make money from the free product. You can’t fix that with volume! When an app makes money (directly or indirectly) then the app is more likely to stick around.  iPhone and iPad apps. Feed Wrangler’s native apps for iPhone and iPad sync with the web app. This is important for me because I consume most RSS on-the-go. A screenshot from the iPad app appears above.ConsLike most users, I want the developer to add “just one or two more features” to make the app perfect for me. Of course that’s the slippery slope to bloatware since every user has a different set of one-or-two features.The developer can avoid bloatware by ignoring all other users and focusing on my feature requests:  Evernote integration. My current RSS client lets me drop an article into Evernote with a few taps on the screen. Sometimes I want to re-read an article or think about it more deeply at a later time. Evernote lets me do this.  Organized imports. While Feed Wrangler imports feeds from Google Reader, it does not maintain Reader’s organization. So I had to organize my feeds manually with Feed Wrangler’s “Smart Stream” feature. If Reader’s folders could be imported as Feed Wrangler’s Smart Streams, that would be cool.  Feed counter. Sometimes I prioritize my reading by the number of unread articles. A counter next to each feed would be helpful.SummaryI plan to try other RSS readers before Google Reader shuts down on July 1st. Feed Wrangler is making a good impression so far.",
      "url": " /blog/2013/06/21/replacing-google-reader-with-feed-wrangler/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-06-13-practice-begins-with-play": {
      "title": "Practice Begins With Play",
      "content"	 : "This afternoon I was invited to speak at the June Table Talks hosted by Table XI. Today’s theme was developer education. My topic: Practice Begins With Play. Developers who want to achieve mastery have many practice resources to choose from, including open source hardware like Raspbery Pi, BeagleBone Black, and Parallella.#PechaKuchaPresentations were given in the PechaKucha format, which encourages presenters to deliver the maximimum amount of useful information in a relatively short time. Each presenter is only allowed twenty slides, with twenty seconds per slide. Truly high impact!#Slides and VideoSlides from the talk appear below. Video will be posted here as soon as it becomes available. Update: Video has been posted.Thank you Table XI for the invitation!",
      "url": " /blog/2013/06/13/practice-begins-with-play/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-05-31-kali-linux-pentesting": {
      "title": "Kali Linux for Pentesting",
      "content"	 : "Braintree hosted a Hax ‘n Snax event this afternoon. Devs from around Chicago gathered together to hack on code, socialize, trade ideas, and hone skills. Thanks Braintree for putting on a great event.My Hax ‘n Snax time was spent interacting with other devs and experimenting with a Linux distro that I just discovered, Kali Linux.What is Kali Linux?Kali is a fairly new Linux distro designed for digital forensics and penetration testing. If you’re looking for a general purpose Linux distro, Ubuntu would be a better choice. Kali is the successor of BackTrack. The developers of Kali and BackTrack, Offensive Software, state that “Kali is a more mature, secure, and enterprise-ready version of BackTrack Linux.” You can download it at Kali.org.Parallels Installation GotchaI’m running Kali Linux inside of Parallels version 7 on Mac OS X 10.8.3 (Mountain Lion). The Linux installation proceeded normally, but when I rebooted the virtual machine, Linux wouldn’t come up. Instead, I got the perpetual display of timeouts shown below.Google led me to a solution on a blog called redrise. The solution: To make Kali run on Parallels, uncheck the check box labeled “Show battery in Linux”, as shown below.I’m not sure why a battery indicator would prevent Kali from booting in Parallels, but the solution worked. When I installed Kali on VMWare, the OS ran without special configuration changes.The Kali Linux ToolsKali comes with over 300 penetration tools. It’s open source, so if you see room for improvement, fork the repo and go to work. If your ideas are strong enough, the developers might accept your pull request. There’s even a version of Kali for Raspberry Pi. Take a look at the GUI.Using Wireshark on Kali LinuxKali includes sniffer tools that can capture WiFi traffic. If the WiFi traffic is “protected” (note the quotes) with an older method like wireless encryption protocol (WEP), Kali’s tools can crack the encryption.A screenshot from Wireshark appears above. Wireshark sits and observes network traffic. If a packet looks interesting, drill down to discover the packet’s source, destination, and contents.SummaryKali enables developers and network professionals to protect themselves and their clients from attacks. Kali is powerful, and with great power comes great responsibility.",
      "url": " /blog/2013/05/31/kali-linux-pentesting/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-05-22-beaglebone-black-running-ruby-on-rails": {
      "title": "BeagleBone Black, Up &amp; Running",
      "content"	 : "BeagleBone Black, like the Raspberry Pi, is a small, inexpensive computer that runs Linux. It’s smaller than a deck of cards and you can buy one for about forty-five dollars ($45.00). The device is made by CircuitCo in Richardson, TX, USA.It Just WorksBeagleBone Black runs Linux right out of the box. Steps required:  Plug in the micro-HDMI cable for the monitor. See the “Gotchas”section about micro-HDMI below.  Plug in the keyboard &amp;amp; mouse via the USB port. You might need a USB hub because the board only has one USB port.  Add power via the mini-USB port or the 5v power connection.After a few minutes of boot time, we have a fully-functioning Linux computer with a GUI, Firefox browser, and other tools.The BeagleBone Black has 2GB of flash storage on the board, and partof that is used for Linux. Here’s a screenshot after just a few minutes of ownership.DocumentationAll of the paper documentation for the BeagleBone Black fits on a slip of paper roughly the size of two business cards. The meat of the documentation resides on the device itself. To reach the electronic documentation:  Plug the BeagleBone Black into a USB port on your laptop.  The board will appear as a USB storage device. One of the files at theroot of the storage device, START.htm, contains the documentation. Itcan be viewed in a web browser.The documentation recommends against MSIE.GotchasThe manufacturer included a mini-USB cable with the device, so you can power it up right after you rip open the package. Gotcha: You need a micro-HDMI cable (or adapter) if you want to attach a monitor. I would have preferred a micro-HDMI-to-HDMI adapater in the box instead of the mini-USB cable. That’s a little nit-picky on my part since micro-HDMI cables are easy to find at Home Depot.A quick shout-out to Home Depot: Their store-brand cables let you test the cable end without opening the package, right in the store. Excellent package design by Home Depot.My second “gotcha” is more important: The curl command did not behave as flawlessly as it did with the Raspberry Pi, so I was not able to install Ruby as quickly as planned. Details below.Installing RailsI will have to cover Ruby and Rails installation in a future blog post because my initial attempts were not successful.Update (Jan 2014): Ruby, Rails, and Ubuntu will run on the BeagleBone Black. Installation detailsRVM, Ruby, and Rails installed easily with Raspberry Pi, even though the compilation time was long. With the BeagleBone Black, I received the following in response to the curl command:sh-4.2# curl -L https://get.rvm.io | bash -s stable --ruby  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (77) Problem with the SSL CA cert (path? access rights?)sh-4.2# Maybe it’s time to try RBEnv? I’ll post a solution when I find it. Or… if a reader of this blog already has a solution for the BeagleBone Black Rails installation challenge, please post in the comments below and I’ll credit you here.#BeagleBone Black vs. Raspberry PiWhich is better, BeagleBone Black or Raspberry Pi? There’s no clear winner in my opinion. It’s a matter of trade-offs:  The ‘Bone runs Linux right out of the box, while it takes some time to get Linux running on the Pi, unless you buy a card pre-configured for the Pi.  RVM, Ruby, and Rails installation was painless on the Pi even though compilation time was long. The jury is still out w/r/t RVM on the ‘Bone.  Cost-wise, they’re within ten bucks of each other. That’s a wash.  The ‘Bone has more Ardunio-like provisions for digital projects.  The Pi includes an RCA output for older TVs. Plus the Pi uses standard HDMI, so there’s no need to get a special micro-HDMI cable.I’ve owned my ‘Bone for just over 24 hours. Lots more to learn. Looking forward to it!",
      "url": " /blog/2013/05/22/beaglebone-black-running-ruby-on-rails/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-05-16-upgrading-ruby-with-rvm": {
      "title": "Upgrading Ruby With RVM",
      "content"	 : "Ruby Version Manager (RVM) is one of my favorite tools in the Ruby ecosystem.  Reason: RVM lets me experiment with Ruby and Rails at will. I don’t know about you, but my best experiments are full of risk so they eventually blow things up. When that happens, I can always recover the broken areas without wasting time on a full system restore.Some devs choose to use another tool, RBenv, that serves a purpose similar to RVM. I began working with RVM before the other tools existed, and since it has always worked well for me, I have no reason to switch.Ruby 2.0.0-p195The latest patch of Ruby 2.0.0, p195, was released two days ago. Time to take it for a spin. RVM lets devs upgrade Ruby and manage gemsets seamlessly. Here’s how the process went.Get the Latest RVMInstructions for installing RVM are at http://rvm.io.If you already have RVM installed, you should confirm that you have thelatest version.$ rvm get headGrab the Ruby PatchWith the latest RVM installed, you can upgrade to the latest Rubypatch level.$ rvm upgrade 2.0.0Are you sure you wish to upgrade from ruby-2.0.0-p0 to ruby-2.0.0-p195? (Y/n): yInstalling new ruby ruby-2.0.0-p195Searching for binary rubies, this might take some time.The process took at least twenty minutes on my system. I don’t have an exact time because I began working on other tasks during the upgrade, and when I looked back at the terminal window, the process was mostly complete, except for a few questions about gemsets…Migrating gems from ruby-2.0.0-p0 to ruby-2.0.0-p195Are you sure you wish to MOVE gems from ruby-2.0.0-p0 to ruby-2.0.0-p195?This will overwrite existing gems in ruby-2.0.0-p195 and remove them from ruby-2.0.0-p0 (Y/n): yMoving gemsets...…and aliases, wrappers, and archiving my patchless Ruby 2.0.0.Do you wish to move over aliases? (Y/n): yDo you wish to move over wrappers? (Y/n): yDo you also wish to completely remove ruby-2.0.0-p0 (inc. archive)? (Y/n): yRemoving ruby-2.0.0-p0........Successfully migrated ruby-2.0.0-p0 to ruby-2.0.0-p195Upgrade complete!$ Upgrade complete. Now running the latest patch of Ruby 2.0.0-p195~$ rvm listrvm rubies   macruby-0.12 [ i686 ]   ruby-1.8.7-p334 [ i686 ]   ruby-1.9.2-p290 [ x86_64 ] * ruby-1.9.3-p385 [ x86_64 ]   ruby-2.0.0-p195 [ x86_64 ]# =&amp;gt; - current# =* - current &amp;amp;&amp;amp; default#  * - defaultAs a final option, I chose to make this latest Ruby patch my default.~$ rvm use ruby-2.0.0 --defaultUsing /Users/rth/.rvm/gems/ruby-2.0.0-p195~$ rvm listrvm rubies   macruby-0.12 [ i686 ]   ruby-1.8.7-p334 [ i686 ]   ruby-1.9.2-p290 [ x86_64 ]   ruby-1.9.3-p385 [ x86_64 ]=* ruby-2.0.0-p195 [ x86_64 ]# =&amp;gt; - current# =* - current &amp;amp;&amp;amp; default#  * - default~$ And that’s it.",
      "url": " /blog/2013/05/16/upgrading-ruby-with-rvm/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-05-13-rubymotion-sketchnotes": {
      "title": "RubyMotion Sketchnotes",
      "content"	 : "Alexis Finch (@agentfin) captured Sketchnotes for a RubyMotion presentation that I gave for Groupon’s Geekfest.Sketchnotes are typography and drawing and notes all mixed together.Alexis is remarkable. It’s challenging enough to capture text notes during a presentation. But Alexis managed to turn the talk into meaningful graphics in real time. Something amazing is happening between the ears of Alexis!Mike Rohde (@rohdesign) developed Sketchnotes when he became frustrated with note-taking. Mike is the go-to guy for anything related to Sketchnotes. He has published videos and a book describing the process.Thank you Alexis and Mike for sharing your artistic insights, and thank you Groupon for having me at Geekfest.",
      "url": " /blog/2013/05/13/rubymotion-sketchnotes/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-04-23-the-man-who-sold-hot-dogs": {
      "title": "The Man Who Sold Hot Dogs",
      "content"	 : "Note: This timeless story pre-dates the web, and it has appeared at WisdomGroup.com. Author unknown.There was a man who lived by the side of the road and sold hot dogs. He was hard of hearing, so he had no radio. He had trouble with his eyes, so he read no newspaper. But he sold good hot dogs. He put signs up on the highway telling how good they were. He stood on the side of the road and cried “Buy a hot dog, mister?” And people bought. He increased his meat and bun orders. He bought a bigger stove to take care of his trade.One day, his son came home from college to help him out.The son said, “Father, haven’t you been listening to the radio? Haven’t you been reading the newspaper? There’s a big recession. The European situation is terrible. The domestic situation is worse.”Whereupon the father thought, “Well, my son has been to college. He reads the papers and listens to the radio. He ought to know.”So the father cut down on his meat and bun orders, took down his advertising signs, and no longer bothered to stand out on the highway to sell his hot dogs.Hot dog sales fell almost overnight.“You’re right, son,” the father said. “We are certainly in the middle of a great recession.”EpilogueWhether times are good or bad, all of us must ask ourselves: What role is played by self-fulfilling prophesy?Luck is what happens when preparation meets opportunity.",
      "url": " /blog/2013/04/23/the-man-who-sold-hot-dogs/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-04-20-ack-written-in-perl-useful-with-ruby": {
      "title": "Ack 2.0: Written in Perl, Useful With Ruby",
      "content"	 : "Ack is an open source command line tool that lets developers search large trees of source code very quickly. If you are looking for a method definition in a haystack of files, Ack will find that needle for you. Many devs regard Ack as a replacement for grep.The Elmhurst ChicagoRuby meetings are always a source of unexpected learning. Today ChicagoRuby welcomed Andy Lester, creator of Ack. Andy released Ack 2.0 two days ago. He shared some of the latest features in an impromptu demo.Why Ack?Have you ever been working on a project, only to be interrupted when you need to look for something? It could be a method name, a variable declaration, or a string of text in a comment. A minor distraction costs you the time it takes to search plus the time required to re-focus.All of us are more productive when we stay in the zone. Ack helps devs to maintain focus and thereby produce better results.First, Install PerlAck requires the Perl programming language. Perl comes pre-installed on Mac OS X and most Linux distros. If you’re running on a ‘nix platform, you probably have Perl already.Windows installations are beyond the scope of this article. If you’re running Windows, you might consider a Linux VM for Ruby and Rails-related work.Installing Ack on Mac OS XInstalling Ack is so easy that it almost feels wrong: Grab Ack in a single Perl file and drop it in your ~/bin/ directory. That’s it.Ack can also be installed via Homebrew, but I prefer the drop it in ~/bin installation since everything is contained in one file. Here’s a more detailed version of the steps:  If you don’t have one already, create ~/bin/ as a subdirectory of your home directory.  Grab a the single-file copy of Ack from http://beyondgrep.com/   Drop the single-file copy of Ack into a file called ~/bin/ack  Make sure that $HOME/bin: appears at the beginning of your $PATH environment variable.At this point you should be running Ack v2.0 or later. To verify:~/bin$ ack --versionack 2.02 (git commit f3c8827)Running under Perl 5.12.4 at /usr/bin/perlCopyright 2005-2013 Andy Lester.This program is free software.  You may modify or distribute itunder the terms of the Artistic License v2.0.~/bin$ Installation complete. Now, let’s take Ack for a spin.Using Ack at the Command LineFor a sample project, let’s use demo_app from Michael Hartl’s Ruby on Rails Tutorial. Imagine that you want to find every file in the project that references user_id. How would you do that?Fast, clear, and highlighted in color. Bonus: If you’re a Vim user,try ack.vim if you want to run Ackwithout leaving your editor.The Bottom LineAck helps devs to find things quicker without leaving the zone. Try it!",
      "url": " /blog/2013/04/20/ack-written-in-perl-useful-with-ruby/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-04-18-new-rvm-behavior-ruby-version-ruby-gemset": {
      "title": "New RVM Behavior With .ruby-version and .ruby-gemset",
      "content"	 : "I trust RVM to manage my Ruby versions and my gemsets. So when I saw an unexpected change in RVM’s behavior, I was concerned about a possible disruption in my workflow.A New RVM MessageHere’s the message I received when I changed into mydirectory/:~/Code/Ruby/apps/$ cd mydirectory/You are using &#39;.rvmrc&#39;, it requires trusting, it is slower and it is notcompatible with other ruby managers, you can switch to &#39;.ruby-version&#39;using &#39;rvm rvmrc to [.]ruby-version&#39; or ignore this warnings with &#39;rvm rvmrc warning ignore ~/Code/Ruby/apps/mydirectory/.rvmrc&#39;, &#39;.rvmrc&#39; will continue to be the default project file in RVM 1 and RVM 2,to ignore the warning for all files run &#39;rvm rvmrc warning ignore all .rvmrcs&#39;.~/Code/Ruby/apps/mydirectory[master]$Decision: Do the UpdateIgnoring a warning feels like sticking my head in the sand. It’s better to face things head-on. So I decided to go with the update. If things don’t work out, I can always remove RVM completely and start from scratch.~/Code/Ruby/apps/mydirectory[master]$ rvm rvmrc to .ruby-versionMy shell responded by repeating the .rvmrc vs .ruby-version notice. But when I examine the directory, everything looks good.total 56drwx---rwx   53 rth  wheel   1802 Apr 19 07:18 .drwx---rwx   27 rth  wheel    918 Feb 10 08:26 ..-rw-r--r--    1 rth  wheel    175 Feb  4 13:41 .gitignore-rw-r--r--@   1 rth  wheel      0 Oct 15  2012 .repl_history-rw-r--r--    1 rth  wheel     11 Apr 19 07:18 .ruby-gemset-rw-r--r--    1 rth  wheel     16 Apr 19 07:18 .ruby-versiondrwxr-xr-x   10 rth  wheel    340 Feb 14 20:41 AFNetworking-RubyMotion-Exampledrwxr-xr-x   13 rth  wheel    442 Feb 24 17:29 AccordionUIViewInstead of a single .rvmrc file, Ruby versions are managed by.ruby-version while gemsets are managed through .ruby-gemset.Bash AliasNext, it’s time to clean things up by adding an alias to~/.bash_profile.alias newrvm=&quot;rvm rvmrc to .ruby-version&quot;Tell the terminal session to use the new ~/.bash_profile with$ source ~/.bash_profileAnd now we can begin using .ruby-version and .ruby-gemset in any .rvmrc-equipped directory with a simple one-word command.$ newrvmFeedback WelcomeIf you notice any snags (including typos) in the above procedure, please reach out via the comments below or through Twitter.",
      "url": " /blog/2013/04/18/new-rvm-behavior-ruby-version-ruby-gemset/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-04-12-elegant-code": {
      "title": "Elegant Code",
      "content"	 : "This quote is too long to tweet, but too good to pass up:  Ugly programs are like ugly suspension bridges: they’re much more liable to collapse than pretty ones, because the way humans (especially engineer-humans) perceive beauty is intimately related to our ability to process and understand complexity. A language that makes it hard to write elegant code makes it hard to write good code.  ~Eric S. Raymond, Author of The Cathedral and the Bazaar",
      "url": " /blog/2013/04/12/elegant-code/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-03-25-challenges-make-us-stronger": {
      "title": "Challenges Make Us Stronger",
      "content"	 : "A man found a cocoon of an emperor moth. He took it home so that he could watch the moth come out of the cocoon. On the day a small opening appeared, he sat and watched the moth for several hours as the moth struggled to force its body through that little hole.Then it seemed to stop making any progress. It appeared as if it had gotten as far as it could and it could go no farther. It just seemed to be stuck.KindnessThen the man, in his kindness, decided to help the moth, so he took a pair of scissors and snipped off the remaining bit of the cocoon. The moth then emerged easily. But it had a swollen body and small, shriveled wings. The man continued to watch the moth because he expected that, at any moment, the wings would enlarge and expand to be able to support the body, which would contract in time. Neither happened! In fact, the little moth spent the rest of its life crawling around with a swollen body and shriveled body and shriveled wings. It never was able to fly.Helping vs. UnderstandingWhat the man in his kindness and haste did not understand was that the restricting cocoon and the struggle required for the moth to get through the tiny opening was the way of forcing fluid from the body of the moth into its wings so that it would be ready for flight once it achieved its freedom from the cocoon. Freedom and flight would only come after the struggle. By depriving the moth of a struggle, he deprived the moth of health.Obstacles and GrowthSometimes struggles are exactly what we need in our life. If we were to go through our life without any obstacles, we would be crippled. We would not be as strong as what we could have been. Give every opportunity a chance, and leave no room for regrets.Authorship NotesKatherine Nero shared this article with RayHightower.com many years ago. The original author is unknown. Emperor moth photo by Dean Morley.",
      "url": " /blog/2013/03/25/challenges-make-us-stronger/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-03-19-how-to-take-a-raspberry-pi-screenshot": {
      "title": "How to Take a Raspberry Pi Screenshot",
      "content"	 : "After you get a Raspberry Pi up and running, you may want to take a few screenshots so you can share the experience with others. Here’s how.Install ScrotFirst, install the screenshot utility, scrot. Open up the LXTerminaland type the following at the prompt:$ sudo apt-get install scrotUse ScrotTo take a screenshot of the whole screen:$ sudo scrotBy default, the screenshot will be stored in the current directory in a file named for the numerical date and time with a .png extension.To take a screenshot after a 10-second delay:$ sudo scrot -d10Learn More About ScrotTo display a list of Scrot commands:$ sudo scrot -hThat’s it!",
      "url": " /blog/2013/03/19/how-to-take-a-raspberry-pi-screenshot/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-03-13-you-can-do-it-now": {
      "title": "You Can Do It Now",
      "content"	 : "If you are fortunate enough to work in the technology industry, you do not need permission to move forward. So do it now.Yes, you will have to define it for yourself.ChiPMA – Product ManagementA few years ago I had the pleasure of hearing Suneel Gupta speak at a Chicago Product Management Association meeting hosted by Pathfinder Development. Three points raised during Gupta’s talk:  Conditions are never perfect. So start now.  What does start mean? Figure that out, and draw out the plan.  If you suck at first, keep going.  Conditions are never perfect.Learning From HistoryGupta is a student of history. He began the talk by drawing parallels between today’s startup culture and the early days of powered flight.In the late 1800s, Samuel Pierpont Langley was an accomplished engineer with great connections to money and resources. One of his lifelong goals was to develop a vehicle for powered flight. He built several successful models, hired the smartest collaborators he could find, and he even raised $50k (in 1898 dollars) from investors. Newspaper reporters followed his entourage as they conducted experiments. Surely, this team of thoroughbreds would solve the flight puzzle.But most people have never heard of Langley. Somewhere in Ohio, far from the news outlets of the day, the Wright Brothers achieved the goal first. When Langley heard the news, he stopped trying.Why did the Wright Brothers win? They never waited for perfect conditions. The Wright Brothers did what they could with the resources they had at the time. Maybe constraints are advantages in disguise.Draw Out the PlanEverybody has dreams. Something magical happens when we take the time to map out our dreams on paper.Gupta’s example: Jack Dorsey, creator of Twitter. Dorsey drew the first mock-up for Twitter on paper. And then he showed it to people. Some laughed. Many gave feedback. He used the feedback to hone the idea into a viable product.Until you put the idea on paper (or some other medium) so you can show it to potential customers and collaborators, you’ll never get the feedback you need to improve.Keep GoingGupta and his brother had an idea. They wanted to create videos about the first wave of Indians to move to America. They approached Hollywood experts about creating the videos.“You’ll need at least $1 million,” they were told. Much too expensive. Most people fold when facing a million dollar wall.But Suneel and his brother made their own videos with the equipment they had available. The videos were not million-dollar productions. But here’s the upside: When they were done, they had something of substance that they could show to people. They posted their work at KahaniMovement.com. One viewer liked the site enough to send a link to Steven Spielberg.Spielberg viewed the videos and he gave the brothers clear, actionable feedback. They made improvements. And they learned something interesting about Spielberg in the process: Even Spielberg starts with a loose cut sometimes! When Spielberg has a fresh idea that he’s trying to communicate, he will grab a hand-held camera, shoot the idea (no matter how rough) and show it to his team. If a picture is a thousand words, then a video is… you get the idea.Teachers &amp;amp; Parents Ignite Our PassionGupta shared a story about his 7th grade social studies class. The class watched a film of JFK delivering his inaugural speech in 1960. Gupta was moved. At the end of the film, the teacher informed that class that JFK had not written the speech. The author was Ted Sorensen, a man whom Kennedy called his intellectual blood bank.In 7th grade, Gupta had found his calling. He would become a speech writer.He went home and told his mother about his decision to become a speech writer. And that’s when his mother gave him a powerful piece of advice: “If you want to do that, you don’t have to wait. You can do it now.”You can do it now. What are you waiting for?A version of this article was originally posted at http://wisdomgroup.com.",
      "url": " /blog/2013/03/13/you-can-do-it-now/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-03-03-technology-and-god": {
      "title": "Technology and God",
      "content"	 : "Reflecting on a quote I became aware of recently:  Technology is a gift of God. After the gift of life it is perhaps the greatest of God’s gifts. It is the mother of civilizations, of arts and of sciences.  ~Freeman Dyson, English PhysicistWell said, Freeman Dyson. Praise God for technology.",
      "url": " /blog/2013/03/03/technology-and-god/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-02-28-objective-c-programming-the-big-nerd-ranch-guide": {
      "title": "Objective-C Programming: The Big Nerd Ranch Guide",
      "content"	 : "  You will be baffled from time to time… Stick with this book. I promise the bewilderment will cease before you get to the final page. ~ Aaron Hillegass, AuthorFinding the Right Objective-C BookI’ve gone through several Objective-C books in my quest to master RubyMotion. You read that right: I’m learning Objective-C so that I can master RubyMotion. Objective-C Programming: The Big Nerd Ranch Guide is one book that clicks for me. Here’s why.      Minimal fluff. Other Objective-C books start off with speeches about why a dev should write for iOS. What a waste of paper. The Big Nerd approach: Start with a few paragraphs about C, and then jump right in to Xcode installation followed by “Hello World.” Refreshingly direct.        Clear examples. As I immerse myself deeper into the world of Objective-C, I am troubled by much of the documentation. It’s okay to describe a method signature, but a description with an example is much better. While reading other Objective-C books, I found myself pausing to search Stack Overflow for alternate explanations. The Big Nerd book is better because everything is self-contained. Method descriptions are followed by clear examples.        Zero Assumptions. Even though the book contains minimal fluff, readers will appreciate how the author defines terms throughout the text. For example, the book does not assume that the reader knows the classroom definition of the word syntax. It defines the word explicitly:    Syntax is the set of rules that governs how your code must be written in a given programming language. These rules are extremely specific, and if you fail to follow them, your program won’t work.Clearly put!Do I Really Need Objective-C?Yes. If you want to be effective with RubyMotion, you must grow strong with Objective-C.The RubyMotion devs whom I admire most also know Objective-C. Devs like Matt Aimonetti (creator of BubbleWrap), Randall Thomas and Tammer Saleh (authors of RubyMotion in the Cloud), Jonathan Penn (instructor/speaker at CocoaConf) and Laurent Sansonetti (creator of RubyMotion) move seamlessly between the worlds of Ruby and Objective-C. Luke became a Jedi because he followed in the footsteps of Yoda.More important than following the masters: Learning from their triumphs and mistakes by reading their code. Developers in 2013 are fortunate to have tools like GitHub where code is shared on a massive scale. Most iOS code is written in Objective-C. If we want to learn from the iOS code that has been written before, we need to know Objective-C.Highly RecommendedIf you want to develop apps for iOS devices, start with Objective-C Programming: The Big Nerd Ranch Guide. The book is also helpful if you prefer RubyMotion over Objective-C.And don’t forget your 10,000 Hours of Practice.",
      "url": " /blog/2013/02/28/objective-c-programming-the-big-nerd-ranch-guide/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-02-26-atari-pong-rubymotion-objective-c": {
      "title": "Atari&apos;s Pong, Built With RubyMotion",
      "content"	 : "Atari’s Pong is a classic video arcade game from the 1970s. Seeing Pong always gives me childhood flashbacks.Pong in Objective-CI recently completed the iOS Accelerated course at the Mobile Makers Academy. For one of our homework assignments, we were asked to build a version of Pong that runs on iOS. Our instructor, Don Bora, started us off with some skeleton code in Objective-C. Each student had to take Don’s code and:  Add paddles.  Make the paddles move on their own.  Make the ball bounce off the moving paddles.  Keep score.  Let one or two players control the paddles via touch.Questions to ConsiderHow do you determine whether the pixels of the ball have collided with the pixels of a paddle? What about wall collisions? When a collision occurs, where should the ball bounce next? As with any application, there are many details to consider.Building BlocksOf course, Don had already introduced the necessary skills in earlier lectures, labs, and homework. It was our job to put the pieces together.Members of the class paired with each other. We shared solutions and advice. In time, we each ended up with a working version of Pong in Objective-C. It’s exciting to see a favorite childhood game running in the iOS simulator on your own machine, especially if you built the game yourself.Pong in RubyMotionSince my day job revolves around Ruby, it made sense to re-write the exercise in RubyMotion. Here are video clips of my two solutions. The first was written in Objective-C during the Mobile Makers course. The second was written in RubyMotion.As expected, the two solutions look similar. Source code is on GitHub:  Pong in Objective-C  Pong in RubyMotionRubyMotion GotchasI encountered a few RubyMotion snags during development:      Mouseovers Ingored. Normally, when running the simulator with RubyMotion, you can mouse over an object in the simulator, hit the command key, and grab a handle to the object.  This behavior was absent in landcape mode with version 1.31 of RubyMotion. The release notes for version 1.33 mention that the problem has been solved. However, that was not my experience.        Touch Events Ignored on Part of Screen. For some reason, the simulator ignored touch events on the right side of the screen. When I programatically moved the right paddle closer to the left side of the screen, both paddles responded to touch events. Searches of Google and Stack Overflow reveal that others have encounterd the same issue with touch events, especially in landcape mode.  Update (3/13/2013): The issue with touch events has been resolved, thanks to advice from Turki Al-Qusaimi in the comments below. Updated code has been pushed to the master branch on GitHub.Of course, I introduced a few bugs of my own while developing the Pong game. At one point, the velocity of the ball increased every time a player scored. It made the game exciting! But I didn’t know the cause of the acceleration, and good developers strive to maintain better control over their projects.I eventually found the acceleration problem: When using an NSTimer object to control animation, you have to invalidate the timer at the beginning of each cycle, or the animation will accelerate. That’s a useful thing to know.The rest of my work in RubyMotion went well, and I continue to enjoy the product. I plan to update the code once the touch event issues have been resolved.Why Play Games?Why should a serious developer spend time writing games? I can think of a few reasons:      Writing a game challenges our skills on many levels. In the case of Pong, we have to dust off our old physics and geometry textbooks to ensure that the ball bounces like a real ball.        Writing a game lets us break out of our constraints. Devs who write business apps are very familiar with constraints.        Because writing a game is fun.  Of course, the most important reason was given by a captain of the USS Enterprise NCC-1701:  The more advanced the mind, the greater the need for the simplicity of play.~James T. KirkRoom for ImprovementBuilding the Pong game was an interesting exercise in testing the capabilities of RubyMotion. Having done the work, I can look back and see some areas where I could improve the results. For example:      Automated testing. These proof-of-concept exercises were done without automated testing. What is the best way to apply test driven development to a game? RubyMotion comes with a TDD framework, MacBacon. That would be a great subject for a future blog post.        Better design. Each exercise looks like something from the 1970s! How would Pong function if it was created in 2013?        Better collision detection. I’m using a built-in iOS method to detect ball collisions. The built-in detection works fine with the stationary walls, but not as well with the moving paddles. If I write a future version of Pong, I should also write a custom collision detection method.  Comments and Pull RequestsMy team and I build business apps. My gaming experience is limited. If you are a game developer, and if you see anything in my code that could be done better, your ideas are welcome. Feel free to submit a pull request via GitHub, or you can drop a note in the comments below. Thanks!",
      "url": " /blog/2013/02/26/atari-pong-rubymotion-objective-c/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-02-17-apprenticeship-patterns-by-dave-h-hoover-and-adewale-oshineye": {
      "title": "Apprenticeship Patterns",
      "content"	 : "  In times of drastic change it is the learners who inherit the future. The learned usually find themselves equipped to live in a world that no longer exists.- Eric Hoffer, Reflections on the Human ConditionBlogger’s Note: This review of the book Apprenticeship Patterns by Dave H. Hoover and Adewale Oshineye was originally posted at ChicagoRuby.org/book-reviews.A New ProfessionSoftware development is among the newest of professions – roughly 70 years old depending on what you consider to be the beginning. The field is in a constant state of flux. New languages, new theories, new ways of communicating with clients… the list seems endless. How does a new developer keep up? How does a seasoned developer avoid growing stale?How to ExcelApprenticeship Patterns was written as a guide for developers who want to excel throughout their careers. You might think of the book as a compilation of design patterns applied to human beings. Yes, the book is suitable for new developers. But seasoned people will find value as well. One useful pattern for veterans: Share What You Learn. All of us see old ideas through fresh glasses when we’re questioned about them. “When one person teaches, two people learn,” says the book.How did the authors compile the list of patterns? They reflected on their own practices and they asked other developers. They spoke with software professionals at various stages of their careers to find out what steps they took (and continue to take) to keep growing.Non-Linear ReadingThe book can be read in a non-linear fashion if you prefer. I would suggest that you start with the Reading List pattern on page 100, followed by Read Constantly on page 111. These two patterns do a great job of framing the rest of the book because the reader will be executing the pattern while reading about it. There’s something meta about starting that way, and meta is cool.The Reading List pattern inspired me to post my personal reading list on GitHub.Steer Your Own EducationOne theme consistently appears throughout the book: If you want to be a great software developer, you must be an active participant in your own education. Formal education might be a good start, but it’s not enough. Formal programs tell you what to read. Formal programs tell what to do in the classroom, and if you’re a good student you do it. But here’s something that we rarely do: While finishing a formal assignment, how many of us stop to consider whether we’ve been assigned the best curriculum for our long term goals?The professional person must be a continuous student. Patterns give us a good place to start.ImprovementsWhat should the next edition of Apprenticeship Patterns look like? For starters, I would love to read an electronic version… filled with hyperlinks. All of the apprenticeship patterns relate to other patterns, and being able to click to the related patterns would enrich the learning experience. This book would make a great mobile app, especially if you turn all of the references into hyperlinks. What an exciting learning experience it would be!Now… if only we could find a hand-held reading device that supports hyperlinks, and a couple of software craftsmen to get the job done :-)Update After the Original PostAde Oshineye tweeted with good news a few minutes after the original post:  @ChicagoRuby: Wish granted: http://apprenticeship-patterns.labs.oreilly.com/. The book is available online as a hypertext.Thank you authors!",
      "url": " /blog/2013/02/17/apprenticeship-patterns-by-dave-h-hoover-and-adewale-oshineye/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-02-12-automatic-ctags-with-rubymotion-and-vim": {
      "title": "Automatic ctags with RubyMotion and Vim",
      "content"	 : "RubyMotion includes a rake task that generates Exuberant Ctags. To generate tags, run the following in the root directory of a RubyMotion project.$ rake ctagsMake Ctags Better With AutomationCtags make writing code more efficient. But we shouldn’t have to type $ rake ctags every time we create a new RubyMotion project. This article shows how to use a shell script to generate ctags automatically every time you create a new RubyMotion app.How Ctags Save TimeCtags can save you time. For example, when creating a new class called HomeViewController that inherits from UIViewController, typing the first view characters of the superclass will produce the drop-down shown below.RubyMotion’s implementation of ctags includes support for built-in iOS classes like UIViewController. The code completion and drop-downs offered by ctags will reduce keystrokes and errors, freeing the developer to focus on solving harder problems.Creating the ScriptHere’s the script. You can use any name that suits you. My script is called mmotion.command (with two m’s at the beginning to distinguish it from the standard motion command) and it’s in the ~/bin/ directory.#!/bin/bash# Create a RubyMotion app, change into the app&#39;s directory, and run ctags.# Written by Raymond T. Hightower on February 12, 2013echo &quot;Creating a new RubyMotion app called:&quot; $1motion create $1cd $1echo &quot;Creating ctags for the new RubyMotion app...&quot;rake ctagsecho &quot;Opening the new app in Vim...&quot;mvim .echo &quot;To use the RubyMotion console, cd into the new directory:&quot; $1All of the work is done by by four lines. The remaining lines are comments or ‘echos’ that tell the user what’s happening while the script is running.Running the ScriptIf ~/bin/ is in the $PATH, you can run the script with the following line command:$ mmotion.command [app name]Of course, we can still do better by leveraging the power of aliases in ~/.bash_profile.Adding an Alias to ~/.bash_profileDropping an alias into ~/.bash_profile streamlines the process even more. You can use any alias you want as long as it doesn’t confilct with another command. Here’s what my alias looks like:alias mmotion=&quot;mmotion.command&quot;Taking the Script for a SpinNow we can build a new RubyMotion app called NewApp with these results:~/Code/Ruby/RubyMotion$ mmotion NewAppCreating a new RubyMotion app called: NewApp    Create NewApp    Create NewApp/.gitignore    Create NewApp/Rakefile    Create NewApp/app    Create NewApp/app/app_delegate.rb    Create NewApp/resources    Create NewApp/spec    Create NewApp/spec/main_spec.rbCreating ctags for the new RubyMotion app...Opening the new app in Vim...To use the RubyMotion console, cd into the new directory: NewApp~/Code/Ruby/RubyMotion$ After the bash script ends, it lands in the directory from which it was originally run, no matter what directories it changed to during execution. This script will open the new app in Vim when it’s done.From here, you can $ cd NewApp and type rake to run the app in the iOS simulator.Feedback WelcomeIf you notice any glitches with this approach, feel free to send me a “heads up” via the contact form on this site or in the blog comments below.",
      "url": " /blog/2013/02/12/automatic-ctags-with-rubymotion-and-vim/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-01-17-the-vast-and-endless-sea": {
      "title": "The Vast and Endless Sea",
      "content"	 : "All of us are inspired when we have a big goal to achieve. Antoine De Saint-Exupery expresses the idea well:  If you want to build a ship, don’t drum up the people to gather wood, divide the work and give orders. Instead, encourage them to yearn for the vast and endless sea.2013 is already proving to be an exciting year. Looking forward to more.",
      "url": " /blog/2013/01/17/the-vast-and-endless-sea/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-01-12-why-i-use-vim": {
      "title": "Why I Use Vim",
      "content"	 : "My primary code-writing tools are:  Xcode for Objective-C.  Vim for Ruby, RubyMotion, and everything else.Here are my reasons for using Vim, in priority order:      Vim is everywhere. I can find Vim on any &#39;nix-based machine: Unix, Linux, or OSX. I spend most of my time on OSX and the Ubuntu distribution of Linux. When I started experimenting with Raspberry Pi, it was pleasant to know that Vim was already there. Having a common editor on multiple platforms makes it easier to bounce between them.        Vim has history. I tried TextMate when I first heard about Ruby. Questions about TextMate’s future caused me to look for an alternative. Vim’s 20-year history and the Vim community convinced me that the editor would be available for many years to come.        Vim is fast. I laughed out loud the first time I sawNERDTree: Refreshing the root node.This could take a while… DONEbecause it happened so quickly.        Vim can be customized. If I want to tailor Vim for myself, I can do that through plugins and .vimrc. If I don’t want to configure it myself, I can use a tool like Janus by Carl Lerche and Yehuda Katz . You may choose a different course. Choices are powerful!  The developers I admire are always learning. More important: They are strategic about what they learn because learning takes time. Being productive with a highly available editor like Vim means that I don’t have to spend time learning a new editor. Instead, I can focus my education in areas that benefit clients directly. That’s why I use Vim.",
      "url": " /blog/2013/01/12/why-i-use-vim/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-01-08-code-pilot-for-xcode-navigation": {
      "title": "Code Pilot for Xcode Navigation",
      "content"	 : "Code Pilot is a free tool that lets developers navigate quickly between files in Xcode. I was introduced to the tool yesterday by Don Bora, instructor of the Mobile Makers iOS Accelerated course that I’m currently taking.Starting Code PilotAfter downloading and installing the product, launch Code Pilot by starting Xcode and using the SHIFT-COMMAND-X key sequence.Code Pilot is free, but you still need to request and install the license file.Installing the LicenseIt wasn’t immediately obvious to me where to put the license file. A quick email to Code Pilot’s tech support team got me an answer. This post may save you some time if you decide to try Code Pilot for yourself.            In Xcode, go into preferences (Xcode      Preferences). One section of the preference pane is devoted to Code Pilot. Go to that section, paste in the license, and you’re all set.      First Impression of Code PilotI can see how the tool could make Xcode navigation faster. One drawback: As a Vim user, I’m in the habit of navigating with h, j, k, and l. Code Pilot requires me to use the arrow keys. If Code Pilot came equipped with Vim key bindings, I would view that as a plus!",
      "url": " /blog/2013/01/08/code-pilot-for-Xcode-navigation/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2013-01-07-leap-motion-advanced-user-interface": {
      "title": "Leap Motion: Advanced User Interface",
      "content"	 : "Leap Motion is a small device that lets users control their computers with simple hand gestures. The Leap Motion controller senses individual hand and finger movements. This is not a touch interface, because your hands never touch anything.WisdomGroup is a member of the Leap Motion Developer Program. Check out this 1-minute video.Why Leap Motion?Computers became easier to use when the mouse grew popular in the 1980s. Touchscreens offer another solution for the interaction riddle. The Leap Motion controller looks like another solution.It’s still very early for Leap Motion. New applications will be born through this device. Stay tuned!",
      "url": " /blog/2013/01/07/leap-motion-advanced-user-interface/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-12-26-rubymotion-provisioning-profiles": {
      "title": "RubyMotion Provisioning Profiles",
      "content"	 : "Note: This article on provisioning profiles was first posted in the RubyMotion Google Group on May 10, 2012. It was also referenced on Stack Overflow.Everything with RubyMotion worked great until I tried to run the sample apps on a physical device. And then I had to spend a few hours wrestling with provisioning profiles. Hopefully this post will save time for somebody else.In order to successfully run a RubyMotion app on a non-jailbroken iPhone 3GS (via $ rake device) I had to:  Delete all of the expired provisioning profiles in the Mac OS X Keychain Access app. Yeah, my past is littered with many random experiments :-)  Explicitly set the path to my provisioning profile in the rakefile for the app (the defaults didn’t work for me).  Explicitly set the name of my codesign_certificate.The default “iOS Team Profile” didn’t work for me. I had to set explicit values in my rakefile for the app. Here’s my rakefile for the ‘Tweets’ sample app:$:.unshift(&quot;/Library/RubyMotion/lib&quot;) require &#39;motion/project&#39; Motion::Project::App.setup do |app| # Use `rake config&#39; to see complete project settings.   app.name = &#39;Tweets&#39;   app.provisioning_profile = &#39;/Users/[username]/Library/ MobileDevice/Provisioning Profiles/[string-of-numbers].mobileprovision&#39;   app.codesign_certificate = &#39;iPhone Developer: John Q Developer (A5QZ9QF4Z1)&#39; end Of course, my name isn’t “John Q Developer”, but you get the idea. Hope this helps!",
      "url": " /blog/2012/12/26/rubymotion-provisioning-profiles/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-12-24-unix-for-ruby-developers": {
      "title": "Unix for Ruby Developers",
      "content"	 : "It is gratifying to know that learning something tangentially related to Ruby will, in fact, teach me more about Ruby.Working With Unix Processes, by Jesse Storimer, is ostensibly about Unix internals. However, in reading this book, I have become more aware of how executables run on my favorite family of operating systems, which in turn gives me more insight into Ruby.Passing ArgumentsFor example, what happens when we pass arguments to a process, Ruby or otherwise? How do the arguments get there? Storimer offers a 1-line Ruby program called argv.rb that we can use to play with the ARGV array:~/Code/Ruby/apps/sandbox$ echo &#39;p ARGV&#39; &amp;gt; argv.rb~/Code/Ruby/apps/sandbox$ ruby argv.rb what results can we expect here[&quot;what&quot;, &quot;results&quot;, &quot;can&quot;, &quot;we&quot;, &quot;expect&quot;, &quot;here&quot;]~/Code/Ruby/apps/sandbox$ Once we have our hands on the ARGV array, we can parse it and manipulate it at will.Grokking ForksThe section on forks contains a lot of mind-bending fun. The author offers some code to explain how forks work, but some concepts are only understandable when we write our own code. I had to write my own in order to raise my comfort level with forks.Here’s what the code does:  In the parent process, fork returns the pid of the child process.  In the child process, fork returns nil.  Therefore, the if block should be executed by the parent process…  …and the else block should be executed by the child process.puts &quot;Parent process pid (before fork) is #{Process.pid}.n&quot;if fork  current_process = Process.pid  parent_process = Process.ppid  printf &quot;Entered the *if* block during Process #{current_process}.&quot;  printf &quot;nThe parent of this process is #{Process.ppid}, which should be bash.nn&quot;else  current_process = Process.pid  parent_process = Process.ppid  printf &quot;Entered the *else* block during Process #{current_process}.&quot;  printf &quot;nThe parent of this process is #{parent_process}, which should be the original of this process.nn&quot;endRunning the above Ruby code produces the following results:~/Code/Ruby/apps/sandbox$ ruby forking_around.rb Parent process pid (before fork) is 79703.Entered the *if* block during Process 79703.The parent of this process is 76751, which should be bash.Entered the *else* block during Process 79704.The parent of this process is 79703, which should be the original of this process.Digging further: Let’s look at the names that correspond to ourpids.~/Code/Ruby/apps/sandbox$ ps -p 79703  PID TTY           TIME CMD~/Code/Ruby/apps/sandbox$ ps -p 79704  PID TTY           TIME CMD~/Code/Ruby/apps/sandbox$ ps -p 76751  PID TTY           TIME CMD76751 ttys003    0:00.40 -bash~/Code/Ruby/apps/sandbox$ We get zero data for the pids 79703 and 79704 because those processes terminated with the program forking_around.rb. However, 76751 shows bash because bash is still running.The book is full of rich playground examples that go much deeper than this. Time slips away when I get rolling with this stuff!Errata HandlingThe book is new so you can expect a few typos. If you run into problems with sample code, a quick Google search will lead you to the corrected text. For example, early in the book I had problems with a command that returns the maximum number of processes allowed on a system. Turns out there was a typo, and the correction was posted by the author himself on the publisher’s errata page.ConclusionI enjoyed reading Working With Unix Processes because it replaces a belief in “the magic of Unix” with a sound understanding of Unix fundamentals. The book is clear and brief with plenty of examples. The author assumes that readers have at least a basic understanding of Ruby. After that, you only need a command line, IRB, and the willingness to explore.",
      "url": " /blog/2012/12/24/unix-for-ruby-developers/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-12-14-mobile-makers-objective-c-rubymotion": {
      "title": "Mobile Makers, Objective-C, and RubyMotion",
      "content"	 : "This week I enrolled in the iOS Accelerated course offered by the Mobile Makers Academy. If you would like to do the same, mention my name and we’ll both receive a $300 discount on tuition.Class starts on Jan 7, 2013. The evening lectures are convenient for those who serve clients by day.Of course, a tuition discount and easy schedule are poor reasons to enroll in a course. This article will describe my reasons for enrolling. If your thirst for learning is anything like mine, you might like Mobile Makers too.Background and ExpectationsMy background includes an undergrad degree in computer science. Over the years, I’ve coded in C, Lisp, Fortran, Pascal, x86 assembler, and Ruby. I became a “business guy” when I launched WisdomGroup eighteen years ago. WisdomGroup is fortunate to have a team of strong technologists who keep our clients happy while teaching me more every day.In late 2011, I began to focus on sharpening my personal technical skills, and that led to my immersion in RubyMotion this year. I expect the Mobile Makers experience to strengthen my grasp of Objective-C, OO theory, and iOS. Cross-training with Objective-C will boost my RubyMotion skills as well.Instruction FormatDon Bora is the head instructor at Mobile Makers. Don is embarrassed when I say this, but he’s the main reason why I chose to enroll. Don is a true polyglot programmer, with a background that includes Objective-C (of course!), C#, Java, Ruby, and Smalltalk among other languages. He currently builds Objective-C apps for his clients at Eight Bit Studios. Don holds degrees in computer science and linguistics.Mobile Makers offers a learning format that is relatively new to me. Beyond the traditional classroom lectures, students get plenty of time for lab immersion and interaction with mentors. I first witnessed this format when Neal Sales-Griffin and Mike McGee launched The Starter League.More About Lab Time and MentorshipClassroom sessions are fine, but they’re not enough. Can you learn a musical instrument by listening to lectures and taking notes? Mastering a skill like software development requires deliberate practice with challenging exercises. Learning is accelerated when lectures, labs, and mentorship complement each other.Learning ArchitectureBehind the scenes, Adam Lupu is the learning architect who designed the Mobile Makers curriculum. In Don’s words: “I know how to explain things, but I don’t know how to structure a course. That’s where Adam comes in.” Adam was the lead architect behind the Rails-based curriculum at the Starter League. Now he’s building the mobile curriculum at Mobile Makers.ExcitementThe Mobile Makers iOS Accelerated class is only three weeks away. If you mention this blog post, you and I will both get a $300 tuition discount. More important, we will acquire skills that will serve us well as we solve problems for clients. What an exciting time to be a developer!",
      "url": " /blog/2012/12/14/mobile-makers-objective-c-rubymotion/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-12-08-design-and-big-ideas": {
      "title": "Design and Big Ideas",
      "content"	 : "WisdomGroup is hiring a web design intern. Our current volume of work requires it. The ideal candidate will share our beliefs about design, summarized as…  Design is not just what it looks like and feels like. Design is how it works. ~Steve JobsGreat design is functional and inspiring. Autodesk captures the idea in this ad from several years ago:Text from the Autodesk ad:  For every serious challenge facing the world there is someone with a big idea. That big idea needs to be nurtured. It needs to be explored and analyzed in order to bring it to life.  And design is at the core of that innovation.  Our technology gives innovators the ability to see how their ideas perform and behave. To exprience it before it’s real.  There isn’t a problem in the world that a great designer can’t solve.If you know a solid candidate for WisdomGroup’s Web Design Internship, please point them to the job description. Thanks.",
      "url": " /blog/2012/12/08/design-and-big-ideas/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-12-03-ruby-on-raspberry-pi": {
      "title": "Ruby on Raspberry Pi",
      "content"	 : "Raspberry Pi is a single-board computer roughly the size of a deck of cards. It’s equipped with an ARM processor that runs Linux. USB ports let you attach a keyboard and mouse. Video is supported via HDMI and RCA. Storage is handled by SD cards. There’s an Ethernet port.You can buy a Raspberry Pi for $35.00.Will it Run Ruby?When my Raspberry Pi arrived, I was curious: Will it run Ruby? How about Rails?  This article describes my experience with RVM, Ruby, and Rails on a Raspberry Pi, along with the “gotchas” I encountered along the way.Why Raspberry Pi?Raspberry Pi was created by a group of UK educators and engineers with a concern: Inexpensive hobbyist computers like the old Commodore 64 no longer exist. Game consoles continue to get better, but there is no replacement for the Commodore. As a result, young people who might become developers get introduced to the profession as gamers or users of Word or Excel. They begin as consumers, not creators. Sad news, because creators shape the world we all enjoy.Creators get stronger when they have tools for learning, play, and 10,000 hours of practice. Enter Raspberry Pi. It’s a tiny, inexpensive computer. It runs open source software so it is highly accessible to curious minds that are eager to learn, practice, and play.Yes, It Will Run RubyHere’s a screenshot from my Raspberry Pi with the Midori web browser, RVM, Ruby 1.9.3-p327, Rails 3.2.9, Vim 7.3, and other tools. In this shot, I’m using the Pi’s HDMI output to drive a 1080p monitor.Yes, this tiny, $35 device will drive a monitor at full 1080p HD.Getting StartedHere’s what you need to get Ruby running on your Raspberry Pi.  1 Raspberry Pi with 512MB RAM or more. I bought mine from Newark/element14.  1 Monitor that accepts HDMI or RCA video input.  1 HDMI or RCA cable, depending on your monitor.  1 USB keyboard  1 USB mouse  1 8GB (or larger) SD card. The instructions recommend 4GB, but I suggest at least 8GB if you expect to run Rails. You’ll need room for gems, git, etc.  1 Ethernet cable w/RJ-45 ends.  1 high-speed Internet connection.  A separate computer capable of writing an SD card image, or an SD card pre-configured for Raspberry Pi.The Pi makers have tested the device with SD cards as large as 32GB, even though 4GB is recommended. Personally, I prefer the larger cards because they allow more room for experiments.Prepping the SD CardThe Pi’s operating system boots from the SD card. There are several methods for prepping the SD card with the Raspberry Pi system. The easiest: Buy a Pi with a pre-configured SD card.My Pi arrived before the pre-configured SD card. I’m a little bit impatient when it comes to new gadgets, so I decided to prep an old SD card of my own.Note: If you’re reading this article, you already know the standard disclaimer about how technology changes rapidly therefore this procedure could be wrong by the time you read this. I’ve included links to references so you can check for updates on your own. You know the risks. Please backup everything that needs it.References:  eLinux SD Card Setup. Methods for putting your preferred image on the SD card. I chose the “Copying an image to the SD card in Mac OS X (mostly graphical interface)” method.  Raspberry Pi Official Downloads. Several SD card images, and a beginners wiki.Prepping an SD card takes a long time. In my case, it took 23 minutes from the time I executed the SD write command ($ sudo dd...) to the completion of the process. It was a little disconcerting because the system didn’t do anything during that time. No feedback whatsoever. Sounds like an opportunity for a pull request!Starting the SystemTo start your Raspberry Pi system:  Plug the SD card, USB keyboard &amp;amp; mouse, Ethernet cable, and video cable (HDMI or RCA) into their corresponding sockets.  Plug in the USB power adapter.There is no power switch. The device is turned on/off by adding or removing the power cable.Linux will boot in text mode. When the system is done booting, you will be prompted for a username and password. Here are the default credentials:raspberrypi login: piPassword: raspberrySeveral seconds later, you will be greeted with the $ prompt. You can continue to use the Pi in text mode, or you can start the X Window GUI with:$ startxRuby with RVMI am a big fan of Ruby Version Manager (RVM). I learn best when I break things. RVM’s handling of Ruby versions and gemsets enables me to recover rapidly and well.This command will install the latest stable versions of RVM and Ruby:$ curl -L https://get.rvm.io | bash -s stable --rubyIt took over an hour for Ruby to compile on my Pi. The read/write speed of my SD card (Class 4) could have been a factor. I have a faster (Class 10) SD card on order.Installing RailsFirst, make sure you’re using the version of Ruby you want to use.$ rvm currentNext, create a gemset and tell RVM that you want to use it.$ rvm use [version of Ruby you want to use]$ rvm gemset create firstgemset$ rvm gemset use firstgemsetAnd then install Rails as you would on any other ‘nix-based machine.$ gem install railsGotchasThe installation process was relatively smooth. Still, here are a few gotchas I encountered with the Pi:  I already mentioned this, but it’s worth repeating: It took 23 minutes to write the SD card, and there was no feedback along the way. This wasn’t a big deal since I had been pre-warned by one of the wikis.  apt-get needed an update before I could install git. $ sudo apt-get update did the trick.  The Pi will do absolutely nothing without a properly configured SD card. You know how a PC will partially boot (to CMOS) even without a hard drive? Not so with the Pi.  The micro-USB power port requires 700mA or more of current. Most micro-USB power adapters deliver 500mA or less. Raspberry Pi will only boot if the micro-USB provides sufficient amperage. Only one of my several micro-USB adapters met this requirement.  A 4GB SD card is far too small if you want to do something useful with the Pi. My first Rails installation failed due to size limitations because I was using a 4GB card. Go with 8GB or larger.  I’m not 100% sure, but I think that a faster SD card will make a difference especially during the compilation of the Ruby interpreter. This is only a guess at this point. I don’t yet know where the bottlenecks are.Overall, the gotchas were minor.For Screenshots, Try ScrotTo take screenshots of the Raspberry Pi desktop, I used Scrot (SCReenshOT). Here’s how to install Scrot:$ sudo apt-get install scrotAfter you install Scrot, this command will take a shot of the entire desktop and drop it into a file called desktop.png in your home directory.$ scrot ~/desktop.pngTo pause five seconds before taking the screenshot:$ sleep 5; scrot ~/desktop.pngAnalog TVDon’t laugh: I still have an old analog TV in my living room. It’s twelve years old and it still works. Since Raspberry Pi comes with multiple video outupts, analog TVs are useful again.Here’s Raspberry Pi running with my old analog TV as a monitor. Reminds me of the Commodore 64 days!Raspberry Pi will work with a wide range of monitors, from HDMI to ancient analog. That makes the Pi accessible to a large audience of hobbyists and developers.ConclusionRaspberry Pi will never replace my primary machine because it’s too slow. But it is certainly fast enough for learning. It meets the goals set forth by the engineering team.I am excited by the learning opportunities offered by Raspberry Pi. To the Raspberry Pi Foundation: Thank you for an impressive device. I wish you much success.Update: You might also be interested in BeagleBone Black Running Ubuntu.",
      "url": " /blog/2012/12/03/ruby-on-raspberry-pi/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-11-19-long-tail-opportunities": {
      "title": "Long Tail Opportunities",
      "content"	 : "You are already familiar with the 80/20 rule. In the late 1800s an Italian economist discovered that 80% of the wealth in his country was owned by 20% of the people. More recently we find that the 80/20 rule applies in other areas of our lives. Professional service firms find that eighty percent of the revenue comes from twenty percent of the clients. Merchants find that eighty percent of sales comes from twenty percent of the products. Winners at the very top of any field tend to win by a large margin.Another View of the 80/20 RuleThe Long Tail by Chris Anderson offers another way to look at the 80/20 rule. Our business example: A book store. The graph below shows book sales ranked by sales volume. Best-sellers are on the left side of the chart (in green) while slower sellers fill in the curve toward the right. Since shelf space is limited and expensive, the store only carries the most popular books along the left side of the chart. Smart application of the 80/20 rule, right? Maybe.The Long Tail: Everything ElseHigh-volume books sell much more than other books. High-volume books (the short head) are the 20 percent that generate 80 percent of the revenue. The Long Tail is made up of everything else.When a book store chooses to carry 20% of the available titles, how do they decide which 20% to carry? How do they predict the hits in advance?Answer: They can’t. Sometimes a sure hit fizzles into a dud, while a “sleeper” rockets to the best-seller list. A similar problem is faced by movie distributors, retail stores, and other businesses. How do you profit from hits that you cannot predict?The Long Tail in 1897Sears, Roebuck &amp;amp; Co. is one of the oldest Long Tail companies in the USA. If you wanted to buy a product in late 1800’s America, you would visit the general store. Most Americans lived on farms at that time, so visiting the store meant riding into town. Product selection was limited to the items on the store shelf. Shopping for a better price meant traveling to the next town – a tough journey in the days before automobiles.Sears entered the scene in 1897. Launching in the middle of the railroad boom gave Sears access to a cheap delivery system for both suppliers and customers. Efficient warehouses located at the country’s busiest railroad hub, Chicago, maximized their distribution leverage. The result: The cozy general store system was disrupted by the Sears catalog, 786-pages filled with more products and better prices.Note that the Sears catalog did not put the general store completely out of business. Impulse buyers still shopped at the general store. But Sears certainly shook things up by making Long Tail products available for everybody.The Long Tail in 1994In 1994 a math geek named Jeff Bezos was reviewing Internet investment opportunities. Bezos observed that book sellers were expanding their physical stores, but none were expanding on the web. He smelled an opportunity. Bezos believed that a new distribution system (the web) could make a wider selection (the Long Tail) available to the world. Amazon.com was born.Sears launched in the middle of the railroad boom, and Bezos launched Amazon.com in the middle of the first Internet boom. Sears benefited from inexpensive distribution via railroads, while Amazon distributes its catalog virtually free via the web. Great business ideas often repeat themselves.The Long Tail TodayDo you remember record stores? Record stores had a problem – limited shelf space. Store managers had to figure out which records to stock by predicting (in advance) which records would sell best – the 80/20 rule again.Some people argue that record stores were destroyed by free music downloads. However, “free” was only part of the problem. The bigger challenge came from the wider selection (Long Tail) offered through music downloads. In January 2009, Apple announced that over six billion songs had been downloaded through iTunes at 99 cents each. Apple’s distribution costs are virtually zero thanks to iTunes.Apple found abundant opportunities in the Long Tail of music distribution. Video entertainment is next.What About the Crud?Some argue that there is a reason why some products are in the Long Tail instead of the short head: If you consider the entire spectrum of any product type, a large percentage of it is crud. The music industry is one example. True, the “better” music gets recorded by a large music studio or played on radio stations. But the Long Tail is full of music that never made it that far – from the amateur taking his first lesson to the garage band with great musical skills and bad marketing.Of course, one person’s crud is another person’s masterpiece. Musical tastes vary widely. The Long Tail works in the digital music business because it makes tiny niches of music available to people who want them.The Long Tail FutureGiven the success of Long Tail companies (like Sears, Amazon, and Apple) one might wonder if there are any Long Tail opportunities left in our economy. The answer is yes! Anderson argues that a Long Tail company needs to do two things to succeed:  Make a wide selection available, from the short head and the Long Tail.  Help customers find what they want.Everything, Easy to FindIf you make everything available, customers could become annoyed if they have to sift through it. So we have to make it easy for them to find exactly what they want.Sears made everything available through railroads, and they solved the sifting problem with the Sears catalog. The catalog served as a convenient way for customers to find the products they wanted.Amazon’s recommendation software is wonderful – unless you’re a customer trying to save money! The engine examines a customer’s past purchases and uses that information to suggest future purchases. Human clerks have done the same thing for centuries. But Amazon’s software does it faster with  zero vacation days.Apple makes everything available and easily searchable through iTunes.ConclusionHistory shows that Long Tail opportunities tend to coincide with the introduction of disruptive technologies. Railroads and the Internet are two examples. Sears could not have existed in catalog form before railroads. Amazon could not have offered the long tail of book selection without the Internet. In both cases, the advent of a faster &amp;amp; cheaper distribution system was a catalyst for a powerful new business model.Are there any Long Tail opportunities left in today’s marketplace? Yes. And the next Long Tail enterprise might be launched by you.Suggested ReadingThe Long Tail, by Chris Anderson. The drastic reduction in the cost of distribution for digital information has far-reaching effects upon our economy. As a result, some businesses will thrive while others will die.Note: A version of this post originally appeared on the WisdomGroup Blog.",
      "url": " /blog/2012/11/19/long-tail-opportunities/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-11-10-make-your-competition-irrelevant": {
      "title": "Make Your Competition Irrelevant",
      "content"	 : "Path to VictoryA skillfully executed business strategy is one path to victory. Many strategy books will tell business owners how to win at the expense of the competition, how to take market share away from the competition, and so on.The book Blue Ocean Strategy proposes a non-typical path to victory over the competition. According to the authors, following a blue ocean strategy will make your competition irrelevant.Competitive Red OceansFirst, some definitions. The authors divide the business world into two oceans: red and blue. Red oceans are markets where competition is stiff and companies battle fiercely. The ocean is red with the blood of business gladiators who cut each other to shreds with competing offerings. Margins tend to be low because customers have many identical options to choose from. Customers view red ocean products as commodities.Undiscovered Blue OceansBut blue oceans are undiscovered markets. Blue ocean companies offer products and services that are so full of value that customers pay premium prices for the better value. Competition is scarce (and the water remains blue) because blue ocean markets tend to be new. Few companies have figured out how to find the blue ocean. Customers are pleased because blue ocean offerings contain features beyond those found in typical (red ocean) products. Customers willingly pay higher prices for the increased value found in blue ocean products.  Blue ocean products deliver more value, thereforecustomers are willing to pay moreto have them.Example: Red Ocean CircusSay the word “circus” to a person of a certain age and they will immediately think “Ringling Brothers.” The Ringling Brothers Barnum &amp;amp; Bailey Circus owned the American circus market for decades. Small regional players competed for crumbs. But by the 1980’s, circus audiences were shrinking and even Ringling Brothers had trouble keeping pace. Kids who once begged their parents for circus tickets wanted the latest computer games instead. The market, as a whole, was struggling for new customers and revenue was on the decline.To make matters worse, expenses were increasing. Animals eat every day and food prices continue to rise. Animals require trainers, and trainers require salaries. Circus “stars” demand star treatment in an industry where the customers, accustomed to Hollywood celebrities, no longer find the stars of the circus impressive.In short, the circus industry was a red ocean. Revenue was on the decline as costs continued to rise. Profits were squeezed.Blue Ocean CircusBut a Montreal street performer had a bold new idea. Create a new kind of circus. Eliminate animals and eliminate the cost of feeding them. Avoid “star” performers in favor of an ensemble cast including former Olympic athletes. Direct the marketing focus toward a completely new clientele: adults instead of kids. Recognize that adult customers will pay more money for a higher level of entertainment. Build elements of high-end entertainment (such as Broadway theatre) into the new “circus.”The result: A brand new blue ocean in the form of Cirque du Soleil. The Montreal street performer, Guy Laliberte, achieved billionaire status through his new blue ocean. Another benefit: Customers willingly travel to places like Las Vegas to see Cirque du Soleil. So performers spend less time on the road than they would with a “traditional” circus. Performers enjoy a higher quality of life because they spend less time away from home and more time with their families. Some benefits, like this, are more important than any financial upside.Another Red Ocean: Intimidating WineWine drinkers know that the process appears intimidating and pretentious to the novice buyer. Personally, I know little of the industry jargon: I’ve picked up words like “vintage” and “legs” but beyond that, I’m clueless. And I’m not alone. An Australian wine company, Casella Wines, discovered that millions of prospective customers were as clueless as me.  If the market has already been defined byyour competitors, you are operating in a red ocean.Why play a game created and dominated by your competitors? Successfulblue ocean companies never battle incumbents head-on.They re-write the rules.Blue Ocean: Inviting WineCasella wines decided to challenge the entire industry with a brand new wine, [yellow tail]. Casella could have sold its product to the existing population of wine buyers (red ocean). However, strategists at the company tapped latent demand for wine among non-wine buyers, people who avoided wine because they didn’t want to learn all the mumbo jumbo. People like beer drinkers, a market three times the size of wine drinkers. So [yellow tail] was marketed without all of the typical focus on vintages, years, etcetera.The result: [yellow tail] discovered a blue ocean of new customers. People who had rarely bought wine before began to buy [yellow tail]. Yes, [yellow tail] wooed customers away from their competitors, but it’s more important to note that they grew the entire wine market. The new brand continues to grow aggressively in an industry previously thought to be mature.Red Oceans and Old RulesIf you’re running an aggressive company, and the market has already been defined by your competitors, you are operating in a red ocean. Who says you need to compete there? Why play a game created and dominated by your competitors? Successful blue ocean companies never battle incumbents head-on. They re-write the rules.The Next Blue Ocean: Where?If blue oceans are so great, where do we find them? What industries offer the best blue ocean opportunities? Which companies are best at finding blue oceans in existing industries?Through their study of many industries and companies, the authors learned that there are no permanently excellent companies, and no permanently excellent industries. Blue ocean examples can be found in mature (or presumed dead) industries such as circus entertainment and dinner wine. One key to discovering the next blue ocean is something called value innovation.Value InnovationValue innovation is delivering a product or service in a manner that is both creative and relevant to the customer.Value without innovation leads to minor incremental improvement. In the circus example, adding more animals might add value, but only in a same-old-stuff kind of way.Innovation without value tends to be futuristic. Technology for technology’s sake. Although customers may find the innovation fascinating, they won’t pay for it without value. An example: Personal computers in the 1970’s. PCs were innovative, but they didn’t deliver value until the creation of useful business applications like electronic spreadsheets (Lotus 1-2-3, Microsoft Excel) and email.Value innovation is a fruitful marriage between value and innovation. It’s delivering something creative that customers care about and will pay for. Value innovation is not necessarily cutting edge. Elements of Cirque du Soleil are seen in other forms of entertainment. [yellow tail] is not the first wine ever sold.Rather, both of these examples combine value and innovation in creative ways. Each attracts new customers (adults, non-wine drinkers), eliminates things that add no value (animals, intimidation &amp;amp; pretentiousness), and add elements that customers are willing to pay for (drama, fun beverages).That’s Not AllA two-page newsletter cannot cover everything in Blue Ocean Strategy. The authors, W. Chan Kim and Renee Mauborgne, include many more example companies and frameworks for navigating your company to the next blue ocean.Caution: Have a PlanHe who ventures beyond his current red ocean without a plan will wind up in a puddle. The authors caution against pursuing blue oceans based on gut instinct. Have a plan, and wear a life vest!Note: A version of this post originally appeared on the WisdomGroup Blog.",
      "url": " /blog/2012/11/10/make-your-competition-irrelevant/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-10-29-building-ios-apps-with-ruby-motion": {
      "title": "Building iOS Apps With RubyMotion",
      "content"	 : "Special thanks to the organizers of MagicRuby and Aloha Ruby for inviting me to present RubyMotion at their respective conferences. Confreaks recorded video at the Aloha Ruby event. The fizzbuzz sample code can be found on GitHub. Slides are on SpeakerDeck.Should you use RubyMotion or Objective-C for iOS development? That depends…If your team is currently building web apps, and they happen to be Ruby-focused, then RubyMotion will enable you to create a minimum viable product (MVP) using skills that you already have in-house. However, if your team is currently Objective-C focused, it may be easier for you to build your MVP in Objective-C.Keep in mind that I am Ruby-biased, so I see advantages on the RubyMotion side of the question. Building the web and mobile pieces of an app in the same language means that expertise can be readily shared throughout the team. Shared expertise makes the team stronger.Thanks again to MagicRuby and Aloha Ruby for asking me to speak, and to Confreaks for recording the talk.",
      "url": " /blog/2012/10/29/building-ios-apps-with-ruby-motion/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-10-18-using-rubymotion-with-interface-builder": {
      "title": "Using RubyMotion With Xcode&apos;s Interface Builder",
      "content"	 : "Executive SummaryRubyMotion is a Mac application that lets developers write iOS apps in Ruby. It’s possible to create the user interface for the app entirely within RubyMotion or with a Ruby gem like Teacup. But what about devs who prefer Interface Builder?This article will show how to use Xcode’s Interface Builder to create a basic UI for a RubyMotion application.Our Sample App: FizzBuzzFor this example we will build an iOS app that calculates and displays the fizzbuzz function. As a refresher, here’s the fizzbuzz algorithm:  Count integers starting with 1 and incrementing as high as the user wants to go.  If the integer to be displayed is a multiple of 3, display “fizz” instead.  If the integer to be displayed is a multiple of 5, display “buzz” instead.  If the integer to be displayed is a multiple of both 3 and 5 (i.e. a multiple of 15) display “fizzbuzz”.The bare-bones UI appears at right. The plus sign increments the counter, minius decrements it, and the label area shows “Begin” at the beginning.First, Build the RubyMotion AppWe start by building the fizzbuzz app in RubyMotion.$ motion create fizzbuzzrmThe code for the finished app can be found on GitHub.Build the UI in Interface BuilderNext, build the UI in Xcode’s Interface Builder.After completing the interface, we will need to asign tags to each element so that the UI knows how to communicate with RubyMotion. Scroll down to View|Tag in the rightmost colum (screenshot below). In this example, I assigned the tags 1, 2, 3, and 4 to the label, plus button, minus button, and reset, respectively.Save the IB file in the /resources directory of your RubyMotion project. In my example, I called the filefbib.xib. RubyMotion will compile the .xib file next time you run the rake command to build the app.Connecting the .xib file to the RubyMotion AppLet’s head back to the RubyMotion app so we can tell RubyMotion how to interact with the IB file. Note that we specify the name of the IB file on the second line of the loadView method.  def loadView    views = NSBundle.mainBundle.loadNibNamed &quot;fbib&quot;, owner:self, options:nil    self.view = views[0]    @counter = 0    @view_handle = self.view  endThe viewDidLoad method is where we assign buttons to their corresponding methods, and we specify how the app should behave when each button is pressed.  def viewDidLoad    @label = view.viewWithTag 1    plus_button = view.viewWithTag 2    minus_button = view.viewWithTag 3    reset_button = view.viewWithTag 4    # background_area = view.viewWithTag 5    plus_button.addTarget(self, action:&#39;plusTapped:&#39;, forControlEvents:UIControlEventTouchUpInside)    minus_button.addTarget(self, action:&#39;minusTapped:&#39;, forControlEvents:UIControlEventTouchUpInside)    reset_button.addTarget(self, action:&#39;resetTapped:&#39;, forControlEvents:UIControlEventTouchUpInside)    # background_area.addTarget(self, action:&#39;backgroundTapped:&#39;, forControlEvents:UIControlEventTouchUpInside)  endAnd finally, let’s define a method for each button.  def plusTapped(sender)    @counter += 1    @label.text = FizzBuzzViewController.fbcalc(@counter).to_s  end  def minusTapped(sender)    @counter -= 1    @label.text = FizzBuzzViewController.fbcalc(@counter).to_s  end  def resetTapped(sender)    @counter = 0    @label.text = &quot;Begin&quot;    rotate_background(@view_handle)  end  def rotate_background(view_handle)    @color_index ||= 0    case @color_index    when 0      @view_handle.backgroundColor = UIColor.redColor    when 1      @view_handle.backgroundColor = UIColor.greenColor    when 2      @view_handle.backgroundColor = UIColor.blueColor    when 3      @view_handle.backgroundColor = UIColor.yellowColor    end    @color_index = (@color_index +1) % 4  endRakeRun $ rake to compile and execute the app.Note the surprise when you hit the Reset button in the app. This surprise is one reason why you should always have a designer on your dev team!ConclusionThe more familiar I become with RubyMotion, the more I learn that there are multiple ways to do things, especially when it comes to UI. If you have ideas or suggestions for a different approach, feel free to dash me a message through the Contact Form. Thanks!",
      "url": " /blog/2012/10/18/using-rubymotion-with-interface-builder/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-10-06-clear-innovation": {
      "title": "Clear Innovation",
      "content"	 : "Some organizations are innovative, while others are just lucky. How can you tell the difference? I would submit that longevity is a great divider between true innovators and those who are just lucky. An organization that generates new ideas time after time breaks the statistical rules that define luck. These are the organizations worthy of study.150+ Years of InnovationCorning entered the glass business over 150 years ago. At that time, the art of glassmaking had remained largely unchanged since the time of the Roman Empire. Glassmaking was a craft, an art handed down from father to son for generations, and glassmaking techniques were closely guarded secrets.Corning changed that. Corning introduced science to glassmaking. Over the past century and a half they have experimented extensively and documented thoroughly. The results are glass innovations we see today, such as:  Fiber optic cables that shuttle gigabits of data throughout today’s Internet.  Large, flat-panel computer displays that use less power than older monitors while reducing eye-strain.To explore innovation at Corning, we’ll take a closer look at a few Corning innovations from the 1800s and 1900s that are still in use today: stones in the glass, the ribbon machine, and joint ventures.Stones in the GlassGlassmakers melt silicon and pour (or blow) it into molds to create useful shapes. That’s an oversimplification, but it serves the purposes of this article. Glass melts at very high temperatures. One big challenge faced by any glassmaker: building a furnace that won’t melt. If the heat of the molten glass melts the furnace, the product and furnace are both destroyed.In the early 1900s Corning searched aggressively for a high-temperature furnace material. Researchers believed that new and interesting glass products could be discovered at higher temperatures.One day, after a fresh batch of glass had cooled, the Corning researchers noticed something disturbing: stones in the glass. Somehow, impurities had crept into the molten glass and when the glass hardened, the impurities were trapped inside.Problem or Opportunity?The stones in the glass appeared to be a problem until the researchers thought about things from a different perspective. The stones were intact. Whatever the “stones” were made of, they were resilient enough to remain intact while the glass was melted. If the researchers could isolate this material, they might be able to use it to build high-temperature furnaces. The researchers managed to isolate the newly discovered material, and it served as a lining for Corning’s furnaces for many decades after that. Pyrex, the glass that chemists take for granted today, was born in the new high-temperature furnaces.General Electric Needed BulbsThomas Edison’s General Electric Company was an early customer of Corning. Edison needed an enclosure for his new electric lights. Glass seemed to fit the bill.At the time, glass bulbs for Edison’s new lights were blown by hand. This presented a problem as the demand for light bulbs increased because Corning couldn’t find enough human glass blowers to blow the bulbs fast enough. Further, when humans create simple, specialized products there are always slight variations in quality and dimensions that may render the product unusable.So the Corning engineers had a new problem to solve. How could they make bulbs faster and with the right dimensions every time?Making Light BulbsThe Corning engineers first attacked the problem by studying how the glass blowers blew the bulbs. Then they tried to duplicate the human process with machines. The result: Failure.Birds vs. AirplanesEarly airplane designers experienced the same kind of failure when they first tried to fly. They tried to mimic the wings and flapping motion of birds, and the result was failure.However, the Wright brothers achieved flight because they looked at the problem from a different perspective. Keep the wings still, and move the air with an engine. Birds don’t fly that way. But today, that’s the way that millions of people fly around the world every day. Airplanes don’t mimic birds. They take a different approach, and they fly higher and faster as a result.The Ribbon MachineBack to making light bulbs. The engineers took a new approach. They threw out everything they knew about light bulb craftsmanship, and they started from scratch. The result was the ribbon machine, a device capable of producing bulbs at the rate of over fifty thousand units per hour. The ribbon machine was Corning’s key machine for making light bulbs for over six decades.Human Skills NeededDidn’t the ribbon machine put glassblowers out of work? Actually, no. Glassblowers were given other tasks that required special human skills. Through most of the innovations in glass technology, Corning maintained good relationships with the craftsmen and artists who fashioned the glass. Skilled workers in other industries rebelled against innovation because they feared losing their jobs to new machines. Corning’s artisans embraced the new technology because the company had other more advanced tasks for them to perform within the company. The more mundane tasks were relegated to machines.Joint VenturesCorning competes with glass companies many times its size. The company’s strength lies in its ability to create intellectual property and to profit from it. Other companies recognize this strength and they readily partner with Corning in joint ventures. Dow-Corning and Owens-Corning are two examples. The Corning company figured out how to establish and maintain positive relationships with other companies long before the term “joint venture” was coined.One reason for Corning’s attractiveness as an innovation partner is their stubborn insistence on investing in research and development, regardless of economic outlook. Many companies look at R&amp;amp;D as something to cut when times get tough. But for Corning, investing in R&amp;amp;D is part of their DNA. As a result, Corning always has something to offer when other firms come looking for a JV partner.ConclusionThe Corning story is remarkable not only because of their recent innovations (fiber optics, LCD panels). Corning has consistently functioned as an innovation factory through two world wars and multiple CEOs. The light bulb, telephone, radio, television, airplane, and computer have all received a boost from Corning’s innovation engine. Corning consistently plays a role in the history of this country and the world. What a powerful source of inspiration.Suggested ReadingCorning and the Craft of Innovation, by Margaret B. W. Graham and Alec Shuldiner.Note: A version of this post was originally published at WisdomGroup.com.",
      "url": " /blog/2012/10/06/clear-innovation/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-09-15-theodore-roosevelt-and-the-arena": {
      "title": "Theodore Roosevelt&apos;s Arena",
      "content"	 : "This is one of my favorite quotes from TR. Pardon the bias toward the male gender. This was written in the early 1900s.It is not the critic who counts, not the man who points out how the strong man stumbled or where the doer of deeds could have done better.The credit belongs to the man who is actually in the arena; whose face is marred by dust and sweat and blood; who strives valiantly; who errs and comes short again and again; who knows the great enthusiasms, the great devotions, and spends himself in a worthy cause; who, at the best, knows in the end the triumph of high achievement; and who, at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who know neither victory nor defeat.~Theodore Roosevelt",
      "url": " /blog/2012/09/15/theodore-roosevelt-and-the-arena/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-09-03-10000-hours-of-practice": {
      "title": "10,000 Hours of Practice",
      "content"	 : "In the book Outliers, author Malcolm Gladwell observes that it takes roughly ten thousand hours of practice to achieve mastery in a field. How does Gladwell arrive at this conclusion? And, if the conclusion is true, how can we leverage this idea to achieve greatness in our professions?Gladwell studied the lives of extremely successful people to find out how they achieved success. This article will review a few examples from Gladwell’s research, and conclude with some thoughts for moving forward.Violins in BerlinIn the early 1990s a team of psychologists in Berlin, Germany studied violin students. Specifically, they studied their practice habits in childhood, adolescence, and adulthood. All of the subjects were asked this question: “Over the course of your entire career, ever since you first picked up the violin, how many hours have you practiced?”All of the violinists had begun playing at roughly five years of age with similar practice times. However, at age eight, practice times began to diverge. By age twenty, the elite performers averaged more than 10,000 hours of practice each, while the less able performers had only 4,000 hours of practice.The elite had more than double the practice hours of the less capable performers.Natural Talent: Not ImportantOne fascinating point of the study: No “naturally gifted” performers emerged. If natural talent had played a role, we would expect some of the “naturals” to float to the top of the elite level with fewer practice hours than everyone else. But the data showed otherwise. The psychologists found a direct statistical relationship between hours of practice and achievement. No shortcuts. No naturals.Sneaking Out to Write CodeYou already know how Microsoft was founded. Bill Gates and Paul Allen dropped out of college to form the company in 1975. It’s that simple: Drop out of college, start a company, and become a billionaire, right? Wrong.Further study reveals that Gates and Allen had thousands of hours of programming practice prior to founding Microsoft. First, the two co-founders met at Lakeside, an elite private school in the Seattle area. The school raised three thousand dollars to purchase a computer terminal for the school’s computer club in 1968.A computer terminal at a university was rare in 1968. Gates had access to a terminal in eighth grade. Gates and Allen quickly became addicted to programming.The Gates family lived near the University of Washington. As a teenager, Gates fed his programming addiction by sneaking out of his parents’ home after bedtime to use the University’s computer. Gates &amp;amp; Allen acquired their10,000 hours through this and other clever teenage schemes. When the time came to launch Microsoft in 1975, the two were ready.Practice Makes ImprovementIn 1960, while they were still an unknown high school rock band, the Beatles went to Hamburg, Germany to play in the local clubs.The group was underpaid. The acoustics were terrible. The audiences were unappreciative. So what did the Beatles get out of the Hamburg experience? Hours of playing time. Non-stop hours of playing time that forced them to get better.As the Beatles grew in skill, audiences demanded more performances - more playing time. By 1962 they were playing eight hours per night, seven nights per week. By 1964, the year they burst on the international scene, the Beatles had played over 1,200 concerts together. By way of comparison, most bands today don’t play 1,200 times in their entire career.Falling in Love With PracticeThe elite don’t just work harder than everybody else. At some point the elites fall in love with practice to the point where they want to do little else.The elite software developer is the programmer who spends all day pounding code at work, and after leaving work she writes open source software on her own time.The elite football player is the guy who spends all day on the practice field with his teammates, and after practice he goes home to watch game films.The elite physician listens to medical podcasts in the car during a long commute.The elites are in love with what they do, and at some point it no longer feels like work.What’s Next?Now that we’ve reviewed the trends uncovered by Gladwell’s research, what can we do about it? All of us want to be great at something. Now that we know how other achievers have gotten there, what can we do to join their ranks?One approach: We could choose a field and practice for 10,000 hours. If we are currently working in our target profession, forty hours per week over five years would give us ten thousand hours.Or… We can look at the question in reverse. Where have we already logged 10,000 hours of practice? What is it that we do really well? What tasks do we perform so well that people ask: How did you do that? Sometimes when we fall in love with practice we don’t even recognize it!If you’re running a company, what does your company do better than anybody else? What is it that the individual members of your company do better than anybody? How do you create an environment that gives everyone on your team the opportunity to practice?ConclusionBusiness is tough, especially now. Yet even in the midst of a challenging economy, there are individuals and companies that prosper beyond all expectations. Practice plays a major role in success.Suggested ReadingOutliers, by Malcolm Gladwell. Through interviews and statistical analysis, Gladwell determines why some people and organizations achieve success far beyond their peers.Note: A version of this post was originally published at WisdomGroup.com.",
      "url": " /blog/2012/09/03/10000-hours-of-practice/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-08-31-four-steps-five-minutes": {
      "title": "Four Steps. Five Minutes.",
      "content"	 : "Nine out of ten startups fail in the first year. Why? More important, what can we do to improve the odds? Entrepreneur Steve Blank might have an answer, expressed in his book The Four Steps to the Epiphany. Key points from the book are summarized in this 5-minute video. About the Author of The Four Steps to the EpiphanySteve Blank worked in, owned, or managed eight different silicon valley startups in the course of twenty years. His eighth startup was very successful; he was able to exit with enough money to retire. At that point, Blank began to reflect on the successes and failures of the various startups he had been involved with. Reflection led to lectures at Stanford, Berkeley, and Columbia. Notes from his lectures evolved into the book: The Four Steps to the Epiphany.Blank noticed that startups went through predictable patterns of success or failure. Yes, there are multiple paths to failure, but there are fewer paths to success. Blank believes he has found a success path that applies to most startups.Counter Example: WebvanSometimes it helps to explain an idea through counter example. Webvan was built to deliver groceries to people who ordered on the web. The problem? Webvan built software and warehouses before they had a reliable supply of customers. They were so confident of their future success that they spent close to one billion dollars building infrastructure. They ran out of money before they had customers.It’s not fair to pick on Webvan when so many other companies make the same mistake. Remember the Apple Newton? Apple is a great company, but they put tons of money into an early PDA (the Newton) before customers even knew what a PDA was. Same with Motorola. Motorola’s Iridium was supposed to be a network of communications satellites covering the planet. Satellites designed to give internet and phone access to every human on planet earth. The problem: Nobody could afford Iridium. In these examples, Motorola, Apple, and Webvan, all burned through money before they had a steady supply of customers. There is a better way.The Four StepsSteve Blank lists The Four Steps to the Epiphany as:  Customer Discovery  Customer Validation  Customer Creation  Company BuildingThere are a few things to point out about the steps. First the process is iterative, not linear. If at any point we get stuck, we go back and repeat a step (or two) based on what we’ve learned. A smaller repetition might be termed an iteration. But if the entrepreneur needs to revisit the entire business plan, or change basic assumptions in the business model, the repetition/backtracking would be termed a pivot.Customer Discovery and the Minimum Viable ProductEvery entrepreneur has an idea about what customers want. We all know something of the pain felt by our customers, or so we think. Blank’s suggestion: Take what you know about your prospective customers’ pain and build a minimum viable product (MVP) with just enough features to address the pain. Then get outside the building. Get away from wherever it is that you work and talk to real customers with your MVP in hand. Let them try it. They’ll give you valuable feedback about what you should do next. If their pain is great enough, and if your MVP is good enough, they’ll buy it.Which Customers?It’s important to note the type of customer we want at this stage. We want early adopters. We want customers who are feeling pain in the entrepreneur’s area of expertise. Perhaps customers who have tried to solve the problem themselves with no success. Early adopters will give us the most useful &amp;amp; actionable feedback at this stage.Customer ValidationThe customer validation step is complete when early adopters buy the product we’re offering. When customers buy, we know we have a valid product. If they don’t buy, it might be time to pivot. In this context, pivot means to change the basic assumptions of the business we’re building. We might change pricing, features, or we might change our entire approach to customers. Many startups go through several pivots before achieving success.Customer CreationAfter we’ve discovered customers, and after we’ve gone through customer validation, it’s time to create more customers. Our initial customers were the early adopters and innovators. In the customer creation step, we move beyond our initial customers into the majority. At this point we begin to spend money on marketing.Company BuildingAfter we’ve gone through the first three customer-oriented steps, we build the company. Now it’s time to spend money on infrastructure, warehouses, expensive customized software… anything we need to scale the company as large as we can. Notice that we don’t try to scale until after we figure out how to develop a steady supply of customers.That’s Not All…We live in a time of continuous &amp;amp; rapid change. Once a business has become successful with The Four Steps, it’s important to remain watchful for new opportunities. Good companies become great when they execute consistently over time.Ignite ChicagoThis presentation was created for Ignite Chicago. Ignite talks are special because speakers are required to present their thoughts in five minutes with slides that auto-advance every fifteen seconds. Thank you Stella Fayman and Tim Jahn for organizing the event.Note: A version of this post originally appeared on the WisdomGroup Blog.",
      "url": " /blog/2012/08/31/four-steps-five-minutes/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-08-26-getting-down-is-mandatory": {
      "title": "Getting Down Is Mandatory",
      "content"	 : "Charlie Rose is an amazing journalist. His interviews are eclectic and rich. During his interview with mountain climber Ed Viesturs, I was struck by the parallels between mountain climbing and business achievement.Managing Risk, Ignoring Critics“People say that I’m a very conservative and cautious climber,” says Viesturs. “It’s true, and I’m happy about that because it’s a risky arena and it’s about managing the risk and being smart and being patient. The people who criticize me have no idea what they’re talking about. They’ve never climbed an 8,000-foot peak. So they’re either jealous or bored. My goal is to be alive. And I don’t care about critics.”Business Parallel: Our most successful entrepreneurs press onward in the face of criticism.Life and Death, Navigating ChangeClimbers operate in an environment where sound preparation and conditioning makes the difference between life and death. True, some unprepared climbers find that they must simply turn around and go back home. On one peak in the Himalayas, Annaperna, one out of every two climbers dies while attempting the climb.Changes in snow conditions and weather are the biggest threats to success. A climber must be very aware of the deadly combination of heavy snow and strong wind: Avalanche conditions. With the right combination of heavy snow and strong wind, a climber moving about in the wrong spot (or any spot) can trigger an avalanche.Business Parallel: Changes in business climate can make the difference between massive success and crushing defeat. It all depends on how well you respond to (or even better, anticipate) change.Getting Down is MandatoryAlong the pathway to success, Viesturs has tasted bitter setbacks. During a climb of Mount Everest, he and his team were 300 feet from the summit. And then he noticed a change in the weather. Conditions were ripe for a potential avalanche. He realized that if the team pressed on to the top of the mountain, they wouldn’t have time to make it down. His trademark phrase came from this experience: “Getting to the summit is optional, getting down is mandatory. It has to be a round trip.” Viesturs and team turned around and they went back home. And they lived to scale Everest another day.Business Parallel: One doesn’t have to bet the company on every new business initiative. Testing takes time, but the wisdom absorbed from test results can increase the odds of success.Having the Right GoalsIt’s good to be aggressive about achieving goals. But sometimes we need to shift our goals backwards in favor of human compassion. Viesturs and Rose recounted a story about a climber who lay injured along the pathway toward a mountain peak. Over forty (40) climbers passed the injured climber without offering assistance. Each felt that the climber was so badly injured that he was going to die anyway. Besides, they had goals to achieve.Business Parallel: If you’re a successful entrepreneur and you’re rolling in dough, when was the last time you spent time teaching our youth how to follow in your footsteps?Why Climbing Fascinates UsToward the end of the interview, Rose asks, “What is it about mountain climbing that captures our imagination?”Viesturs’ response:  It’s about plugging away at something that looks almost impossible. It’s about looking at something from the beginning to an end that seems almost unachievable. And then achieving that end.  When I speak to corporate groups [about achieving a goal], my message is that if you’re passionate about it, if you have a good team,if you enjoy the process, if you break it into steps,you can achieve amazing things if you have the patience to do so.Amazing things indeed.Note: A version of this post originally appeared on the WisdomGroup Blog.",
      "url": " /blog/2012/08/26/getting-down-is-mandatory/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2012-03-16-cocoaconf-hey-nerd": {
      "title": "CocoaConf: Hey Nerd!",
      "content"	 : "                “Hey Nerd!”It was the night before CocoaConf. I had just walked into the hotel bar. A table full of wise guys (wise as in Stooges, not Sopranos) called out to someone named Nerd.“Hey Nerd!” they shouted again.This time I looked at their lanyards and badges. Same as mine. They were talking to me. Complete strangers, but not for long because they invited me to join their table. I was immediately comfortable when the discussion turned to midichlorian levels and LEGO’s model of the Millenium Falcon. Camaraderie like this is why I go to conferences.Earlier that day I listened to the author of a popular iPad app as he described the challenges of writing 3D graphics code. The newest iPad was delivered during CocoaConf, so this room full of Mac devs was pumped! I go to conferences for discussions like this.It’s a little after 5am as I type this blog entry. I’m excited about the presentations scheduled for this morning, so excited that I had to get up a few hours early just to write about it. Excitement like this is why I go to conferences.I attend CocoConf because developers are part of a bigger community with a common goal: Getting better at what we do. Books and videos are a good start. Classes are helpful. But beyond the standard learning tools, sometimes a good one-on-one discussion with a fellow dev will help both people to look at a concept in a fresh way. To solve a knotty problem. To resolve a debate about midichlorian levels.Everybody learns when we share ideas. I look forward to the next CocoaConf.Note: The author originally posted this article at Built in Chicago in March 2012.",
      "url": " /blog/2012/03/16/cocoaconf-hey-nerd/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2011-07-27-ruby-on-rails-3-tutorial-by-michael-hartl": {
      "title": "Ruby on Rails 3 Tutorial By Michael Hartl",
      "content"	 : "Note: This review was originally posted at ChicagoRuby.org/book-reviews.Ruby on Rails 3 Tutorial is well suited for beginning Ruby on Rails developers. Advanced developers will find it useful as well. Here’s why:  Sometimes, as we become more advanced, we miss fundamentals along the way. Ruby on Rails 3 Tutorial will help to fill in the gaps.  It is possible to know a concept so well that you can’t express it in words. If you’re an advanced developer, and you need to explain a concept to someone less advanced, you might not have the words to express your thoughts. This book can give you good building blocks for your explanations.Like most Rails books, this one starts with a few paragraphs about the Ruby language and the Rails framework. This book differs from some others because the author strives to build good craftsmanship practices in the reader. The earliest chapters introduce source code version control (using Git and GitHub), test driven development (using RSpec), and cloud hosting (using Heroku). By chapter two, the reader has already created and pushed to a GitHub repo. Very effective, very clear.Advanced users who want to brush up on best practices like TDD will appreciate Hartl’s coverage and explanations of the practices. No developer with critical thinking skills will do something simply because “all the cool kids” are doing it. When Hartl talks about TDD, he does not preach it as a panacea against bugs, but he states (realistically) that TDD makes bugs more likely to be caught and fixed when they occur.Hartl expresses a healthy level of irreverence for some of the semantics of our profession. When discussing the difference between TDD and behavior driven development (BDD), he states “Frankly, I’m not convinced there’s much of a difference.” This approach builds trust. You get the feeling that you’re listening to a fellow developer who has fought and defeated many of the dragons that you’re currently facing.Ruby on Rails 3 Tutorial is not a quick read. One reviewer, Derek Sivers of CD Baby, mentions in the jacket notes that he finished the book in three days. It’s certainly possible to read RoR3T in three days. But readers who want to truly absorb the material will spend time working through the examples, breaking code, fixing it, and generally immersing themselves in all this Ruby on Rails goodness.Ruby on Rails 3 Tutorial is a well-written book with clear explanations and useful examples. Highly recommended.",
      "url": " /blog/2011/07/27/ruby-on-rails-3-tutorial-by-michael-hartl/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2008-10-17-gmail-growing-pains": {
      "title": "GMail Growing Pains",
      "content"	 : "Note: This article was originally posted on the WisdomGroup blog.WisdomGroup is both a proponent and a user of GMail. Of course, the service is not perfect, as proven during yesterday’s GMail outage. “It’s only affecting a small number of users” is hardly consolation when you’re one of the affected users.Sys Admin AngerOne angry systems administrator posted this message in the Google Apps Discussion Group  Since yesterday around at least 4:00pm my CEO cannot access his mail. He gets a 502 temporary error. Support keeps telling me it is affecting a small number of users. This is not a temporary problem if it lasts this long. It is frustrating to not be able to expedite these issues. I have to speak with the boss again and he’s po’d. This is considered a mission critical issue here. We may have to make other arrangements. Apparently Google mail is not very reliable. I think I would have pushed for something else before we switched if I had known the level of unreliability.Achieving 100% UptimeIn a perfect world, I could complete this sentence:  Achieving 100% uptime is easy. All you have to do is…Unfortunately, I don’t know of a 100% uptime solution. Systems are imperfect because they’re designed by imperfect humans. Good engineers design systems with multiple redundancies. Sometimes those redundancies fail.What Sys Admins Can DoThe GMail web client is outstanding. But when it fails, users can sometimes send/receive email through an old fat client like Microsoft Outlook or Apple Mail. Just point the fat client to GMail, and you’re in business.What Google Can DoThe best thing a company can do in a time of failure: Communicate. Solve the problem, and make sure you’re sharing updates with users on a regular basis.Bring Email In House?When GMail fails, it’s tempting to wish for the good-old-days of the in-house mail server. “What moron moved us to external email?” is a common thought during an outage. But it’s important to balance our thinking:  With in-house email, you’re responsible for everything. Uptime, malware, bandwidth, etc.  Managing in-house email takes time. Time for regular maintenance. Time for troubleshooting when things go wrong.  Managing in-house takes money. Money for software upgrades, anit-malware tools, and talented technical people.Sometimes in-house email makes sense. In other cases, the time &amp;amp; energy spent on email management is better applied to business issues. It’s important to weigh the options rationally, especially in a time of crisis.By the way, in-house email systems are subject to the same “less than 100% uptime” rules as all other systems.",
      "url": " /blog/2008/10/17/gmail-growing-pains/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2007-12-10-gmail-vs-microsoft-exchange": {
      "title": "GMail vs Microsoft Exchange",
      "content"	 : "Note: This article was originally posted on the WisdomGroup blog.When Arizona State University shifted 65,000 users from their in-house email system to GMail, support calls went down and savings went up. The move saves the University $400,000 per year. Does it still make sense to have an in-house email server?Four-Minute Video DescriptionAdrian Sannier, Information Technology Officer at ASU, outlines the problem and solution in this 4-minute video.  Migrating from ExchangeWisdomGroup migrated to GMail in November 2007 after nine years with Microsoft Exchange. The biggest benefits for WisdomGroup include:  Savings in time &amp;amp; money. Every email system requires periodic maintenance and troubleshooting. Letting another entity manage our email means that we don’t have to manage it ourselves. Therefore we can focus on client projects.  Huge Capacity. Currently 5GB per user (and growing).  Same Email Addresses. Every email address at WisdomGroup remains username@wisdomgroup.com. To the outside world (people who send us email), nothing has changed. No need to change business cards, stationery, etc.  Better antispam. GMail spends a great deal of time researching and deploying antispam measures. True, some spam still makes it through because no system is 100% effective. However, GMail’s antispam performance is better than other antispam software WisdomGroup has used. And you don’t have to maintain it, GMail does that for you.  Web Interface. No need to specify POP, SMTP, or IMAP servers. Everything, including account administration, is handled over the Web.  No Multi-Bucket Manual Archiving. Outlook may have given you the message “Would you like to automatically archive your email?” or something similar. When you archive in Outlook/Exchange, you end up with multiple buckets of old email. This is cumbersome when you want to search for an old message because you have to search each and every old bucket separately. GMail stores all of your messages in one huge bucket for easier (and faster) searching.When to OutsourceIf fighting spam has become a commodity service, why not outsource it? That way, your company can focus on those things that add value to the products and services you sell to your customers. Do you really want to spend time maintaining a mail server? Or do you want to spend time growing your company?",
      "url": " /blog/2007/12/10/gmail-vs-microsoft-exchange/",
      "author": "",
      "categories": ""
    }
    ,
  

    "blog-2007-01-02-diamonds-for-ten-dollars-per-carat": {
      "title": "Diamonds for Ten Dollars Per Carat",
      "content"	 : "Blogger’s Note from Feb2013: This article was originally posted on the WisdomGroup blog in Jan2007. In hindsight, my predicted timeline was too aggressive. However, the rest of the post remains sound.  If Woolworth’s sold diamond rings, you’d have a million of ‘em baby! ~Fats Waller, Piano composer/performer, circa 1915Woolworth’s and Fats Waller are long gone, but Waller’s tounge-in-cheek prediction will come to pass in the next few years. Diamonds will sell for $10.00 per carat in the year 2015. Advances in the fabrication of synthetic/cultured diamonds will drive down the price and value of these “precious” gems. At the same time, the needs of computer manufacturers and huge economies of scale will make it worthwhile for diamond fabricators to roll out cheap diamonds by the pound.Yes, They’re RealThe diamonds I’m talking about are chemically identical to diamonds found in the mines of South Africa, Canada, and other spots around the world. I’m not talking about cubic zirconium. I mean man-made diamonds that are arguably superior to diamonds found in mines. Mined diamonds occur in nature, and they are formed when carbon is exposed to millions of years of heat and pressure beneath the earth’s surface. Volcanic activity can play a role. As natural diamonds form and harden, they tend to envelope impurities within. These impurities, (the diamond industry calls them “inclusions”) can greatly reduce the value of a diamond.But man-made diamonds contain zero inclusions.There are several ways to make a diamond. Some methods duplicate the heat and pressure deep within our planet. Others grow a diamond from a “seed” crystal in a special chamber. Regardless of technique, a man-made diamond will only contain inclusions if that is what the manufacturer wants. Cultured diamonds are real, and they’re more attractive.Wired Magazine’s Diamond RevelationCheck out this article in Wired Magazine. The writer interviews two diamond makers right here in the United States. Apollo Diamond, Inc. sells diamonds for jewelry and technology. Gemesis sells colored diamonds that are rare in nature (very expensive), but so easy to make in their Florida-based warehouse. Other entrepreneurs are sure to follow, and prices will certainly fall. The biggest drop will come when diamond-makers in China, India, and other manufacturing powerhouses come online.Are Cheap Diamonds Worth Making?Computer industry insiders are familiar with Moore’s Law. The law says that computers will double in processing capacity and halve in price every eighteen months. Moore’s Law has held true for over forty years since Moore first announced his prediction in the early 1960’s. But now Moore’s law is approaching a wall.Today’s microprocessors are made of silicon. Each new microprocessor generation contains double the number of transistors of the previous generation. Two byproducts of cramming lots of transistors on a piece of silicon: processing power (good) and heat (bad). Heat must be removed from the system in order for it to work properly, and that’s why computers have fans, heat sinks, and (in some cases) liquid cooling systems. Even better: Make chips that can take the heat!Diamonds Can Stand the HeatDiamonds withstand heat that would evaporate silicon. Researchers at the University of Arkansas have demonstrated that “Diamond, the best thermal conductor known, is the ultimate choice… in the next generation compact, high power and high speed computer.” Other Universities and research institutes have found similar results. Google the term “diamond substrate circuit” and you will find over 600,000 hits. The only problem: Right now, diamonds are too expensive.Prices Driven DownwardDiamond prices will plummet in a wonderful downward spiral as the following factors converge:Silicon exhausts its potential as the material of choice for chip production. Too many transistors, too much heat will cause the demise of silicon.Computer users demand more and more power every year, and computer manufacturers will oblige or be driven out of business by competitors.More diamond makers come online in low cost, high volume manufacturing countries like China and India.What About the Diamond Cartel?Some argue that the powerful diamond cartel, an entity that has held the line on diamond prices since 1905, will squelch the synthetic diamond movement. They’ve allegedly toppled governments in their quest for global diamond control.But the diamond cartel has never come up against the fiercely competitive beings of the technology industry. Microsoft, Intel, Apple, Dell, HP, IBM, Google, Sun, SGI, AT&amp;amp;T, Oracle, and all the rest are fiercely aggressive, amazingly brilliant, and they love to win. These companies have honed their skills against each other in a global marketplace that devours companies that make mistakes. Do you really think the diamond cartel can stand up against technology industry titans?Another factor: Governments are hungry for weapons, and weapons are driven by computer technology. A government bent on military might will not bow to the wishes of a cartel that sells shiny stones.The bottom line: The diamond cartel will be broken.Why “ten dollars” and “2015”?Simple. I pulled those numbers out of thin air. Almost. I was at a family reunion two years ago when I first decided to make my diamond theory public. My cousins are very opinionated (unlike me), and I needed to get my point across in a direct, simple, and shocking way. The idea “ten dollars in ten years” came to mind, hence Ten Dollars per Carat in 2015 (the year was 2005).It’s hard to get the numbers exactly right when predicting the future. But the trend is clear. Synthetic diamonds (or “cultured” diamonds, take your pick) will plummet in price over the next few years. People will realize that they are:chemically identical to mined diamondssuperior in terms of the &quot;four C&#39;s&quot;: color, cut, clarity, and caratmass produced and readily available to everybodyFurther, technology companies will demand diamond-based circuitry in their quest for faster and smaller computers. The future is clear. Diamonds will sell for ten dollars per carat in the year 2015.",
      "url": " /blog/2007/01/02/diamonds-for-ten-dollars-per-carat/",
      "author": "",
      "categories": ""
    }
    
  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
}
