Updated Review of LLM Based Development

I tried developing using GPT mid-2022. While I was amazed by the potential, I was not impressed enough to add it to my daily development workflow. It fell off my radar as a development tool, outpaced by a far more impactful use of text generation and image creation. A toolset that has significantly changed my day-to-day productivity.

Recently, a group of peers convinced me to give coding with LLM another shot. They loved using A.I. to develop code in languages they were not comfortable with. Or, as a manager, a way to better explain what they wanted to see in a project from their team. What convinced me to try it again was their highlighting of how well the results were formatted, syntactically correct, and well documented from the get-go. While they admitted the development of code may not be faster, the prospect of all those benefits culminating into a cleaner, well formatted final product convinced me to develop with GPT again in earnest.

I began my reexamination of the tooling via demos, as we often do. I was very impressed. I converted code into PowerShell (which I don’t know well) and re-created functionality I came across in weeks prior. I was so impressed, I showed my team examples of how the work they completed in the past could’ve been done with the help of GPT instead.

After those successes, I committed to using GPT to develop. Over the next few weeks I made sure to use it on projects I was working on.

While the technology showed incredible advancements since I tried it last year, it still hasn’t become my go-to in the same way using ChatGPT has for writing content.

Here are some areas I was both impressed with but left wanting:

  1. Code completion
    • Pro: Impressive. The look-ahead came in handy similarly to code-completion functionality of the past, with the added benefit of more contextual relevance that was not just a “cookie cutter” snippet.
    • Con: It gave me a useless hint quite a bit and I found myself typing almost as much as before with the incumbent “dumb completion”. I think it is because my mind is moving ahead to what I want the code to do, not necessarily what it is doing on the console at the moment. In the end, it is using patterns to make predictions. So, any new code that is a result of changes to my approach, or my on-the-fly reworking to fix a bug (that was not due to syntax issues) took as much time to develop as non-GPT-based code completion.
  2. Testing
    • Pro: When it comes to testing an existing application, the A.I. hits it out of the park. Ask it to “write a test for myFunction() using Jest” it creates an awesome base test case that I would have hated to write for each function.
    • Con: Some of the same issues outlined in the “Code Completion” and Functional Development” can be problematic here. It doesn’t always create a great test for code I haven’t written yet. (i.e. TDD) However, if the code is already there, it uses that context I’ve provided and its LLM to unpack what it the function is suppose to do and generate all the mocks and assertions needed to create a well written unit test.
  3. Functional Development
    • Pro: Much like helping me get past the dreaded blank page in text generation, I found it more useful than Google searches and StackOverflow reviews to develop a series of functions I wanted, without developing entirely from scratch. Better than code snippets, the snippets A.I. gave were pre-filled based on my prompts, variables, and existing object definitions. That was appreciated. I didn’t have to review the documentation to tweeze out the result I wanted. The A.I. pulled it all together for me.
      Additionally, the fact that it almost always has an answer goes under appreciated in other reviews I’ve read. The part that makes it so advanced, is it fills in a lot of grey area even if I (as a stupid human) carelessly leave out an instruction that is critical in generating a solution. If I were to get the response, “could not understand your request” due to my laziness, I would never use it. The assumptions it makes are close enough to my intent that I am either using the solution, learn a new path, or see what my explanation is missing so I can improve how I communicate with it.
    • Con: The end result did not work out of the gate most of the time. Sometimes it never got it correct and I had to Google the documentation to figure the issue. This was due to what I think was more than one documentation existing for various versions of the library I was using. I’m not sure. While the syntax was correct, the parameters it assumed I needed, or the way the calls were made to interface with a library/API led to errors.
  4. Debugging
    • Pro: Per the “functional development” points above, I was impressed at how I could respond to a prompt result with “I got this error when using the code above: [error]”. It recognized where it went wrong, and attempted to rewrite the code based on that feedback.
    • Con: Each response had a different result than the original. So, instead of fixing what I found was wrong (like a param missing) it also added or removed other features from the code that were correct. This made the generated result difficult to utilize. In some cases, it could never understand the issue well enough to generate working code.

One limitation I am not too surprised about, and am hopeful to see evolve in the future, is the AI’s understanding of a project in its entirety. Done so in a way that context is used in its function creation, making the solutions it provides “full stack”. Imagine a Serverless.com config, for an AWS deployment, that generates files and code that creates and deploys workflows using Lambda, DynamoDB, S3 and so on, all being developed based on prompts. With the yearly (and more recently) weekly leaps, I don’t think we are to far away.

As of today, I find myself going to GPT when filling in starter templates for a new project. I find it’s a much better starting point than starting from cookie cutter function as I set up my core, early, “re-inventing the wheel”-type, skeleton.

For example, I will use a Gitlab template for my infrastructure (be it GL Pages, Serverless, React, nodejs or Python and on and on), then fill in the starter code an tests via a few GPT prompts, and copying them over. Beyond that copy, I find myself detaching from GPT for the most part, and returning to occasionally “rubber duck” new framework functions.

Examples referenced above

Here I asked for a non-3rd-party use of promises (only await/async) which worked. Then I asked to modify the code by adding a zip task, and it re-introduced the promisify utility when it added the zip process.

Finding Nebo

In my journey from being “a writer hater to a writer lover”, finding the Nebo app was a defining moment. Of all the apps I tried, only Nebo could recognize my chicken scratch, retain my handwritten texts for review, and allow me an edit the original text before converting it to type.

Nebo beautifully melds the written form, digital tech, and typography. Its edit-gestures feel incredibly natural, the digital ink flows like your favorite pen, and the final product is compatible with the modern world. I’ve gained in all mediums and compromised in none.

It’s rare to find an app drives you to create opportunities to find excuses to use it. Especially when the app exists to enhance the mind, not rot it.

Feature Highlights

Chicken scratch interpreter

I’m amazed at how well the interpreter is, able to convert my god awful handwriting to text. It seems to combine A.I. OCR handwriting with grammar to assume a nearest approximation of what I’m trying to write. Whatever the methodology, the results far better than apple’s built-in note taking app.

Inline Editing in ink or between typed notes

In the event the interpreter fails, the editing features makes correcting easy and fun. For example, handwritten text is retained until you double tap it to convert to type.This allows you to review your writing before conversion. You can also preview the converted text in a banner scrolling horizontally above.

Wish List & Nits

Night/Dark Mode

Sometimes inspiration strikes right as I’m getting to bed. I reach for my iPad, open Nebo, and BAMB! An intensely white screen blinds me as my eyes try to adjust.

More Heading sizes

Simply put, H1 looks like H2, and I can’t bold text on Its own line without it becoming a heading. So, new H3?

Clearer New Line & Erase Interpreters

I like the natural feel of gestures. However, I find my self trying to gesture a new line over and over to no avail. I think the app can be smarter. Why not assume one new line is available, infinitely until converted. So, when I hit the end of a line I don’t need to gesture in the first place.

The question that keeps you up at night IS the sign you’re looking for

3840x1200

Have you ever woken up every morning with the same question burning in your mind? Do you constantly wonder if it’s worth changing paths, environment or career day-in and day-out but continue convincing that part of your mind to quiet down? Do you think you could make a decision to act if  you had a sign, or a clue, or some sort of guidance from someone more experienced than you that could “show you they way?”

About 10 years ago I had those thoughts swirling in my head. I had a good, secure well-paying job and a bright future. Though, for some odd reason, I woke up constantly with those questions burning inside me day-to-day and week-to-week.  “Why can’t I just be content with what I have?”, I would ask myself. “What’s wrong with me?!”

I convinced myself changing paths would be a form of quitting – and I was no quitter. Some friends would explain to me how “life is hard. No one likes what they do. Everyone has those questions – it’s normal, but you keep working until you get over them. Eventually they go away. Anywhere you go you’ll ask the same thing. Everywhere in the world is the same. You’re just running from your problems. Deal with it.”

It sounded like mature advice to me so I tried to overcome the doubts and concerns I had about my current path. Unfortunately, letting go of the questions turned out to be pretty impossible.

I got it in my head that I wanted more, something different, something challenging and I couldn’t kill that thought. I wanted to move to SF and be part of the startup community. I wanted to create things people used. I wanted to meet others that created the things I loved to use. Friends on the other side of the advice fence validated those thoughts telling me “it would be a great fit. Quit what you’re doing now and just go!”

How could I decide which piece of advice was right? Both had their merits and both came with a fair share of doubts. Growing as a person by learning to be content didn’t really feel like a great life-goal and quitting to follow a curiosity seemed irresponsible. As Kenny Rogers would say, “You’ve got to know when to hold them, know when to fold them” but how do you know when that is?! Why didn’t Kenny answer his song’s question?!

Screen Shot 2015-03-20 at 1.38.45 AM

As my freshly shaven cheek chafed against my frosted collar while walking to work on a frigid winter day in DC I decided enough was enough. If there isn’t a clear logical answer to stay or go then I would break the tie on weather. I don’t care if it’s right or wrong – I was going to make the move. I was done with the cold. I quit my job, got on a plane and flew to a city that I had never seen with no work waiting for me on the other side. When what I’d done truly sank in at 30K ft I went to the bathroom and threw up.

Of course, I will never be happier that I came. Without a doubt, it was the best decision I’ve ever made. I realized this as I was walking home from my first job at a cool new startup in SF. I paused to catch the sunset of a spectacular view from the street, groceries in hand, when it hit me – I hadn’t had a sleepless question-filled-night or pensive morning in – well, since I arrived.  Sure the process was scary, but the questions were gone. I still had tons of work to do and was working extremely hard, but, now, I had an open mind to do it. Life felt right again.

It was important to me to try and distill a lesson from this experience so I would never have to go through that period of agonizing unknowns again. After all, staying back in DC could have been the right answer too. Sometimes you are running from problems and need to face them in order to grow. On the other hand, it’s important to follow your dreams; life is short. So, do I know now how to make the right decision again when the time comes? What did I learn from all this?

The answer IS the question.

Yeah. It really is that simple. No, the “answer” isn’t any old “question.” It’s the questions that burn inside you. The ones that wake you up and put you to bed. The ones that you debate between constantly and ask advice for every chance you get. The ones spawned out of an interest to learn something different. Those are the questions I’m talking about. Those are the question that MUST be answered. They are answered through creating your own experiences.

Well, what if I follow that logic and I’m wrong?

That’s the beauty of these gut-wrenching questions. As I learned, even if I was wrong,  the questions I had went away – they got answered. My mind was free and a freer mind can do so much more than a plagued one. So, you see – it’s a win/win. Either be half the person you are because you are preoccupied mentally every day with a burning question or be half the person you are because you made a bad decision. Only attempting the latter will leave you net-positive with no more questions and an ability to work towards living fully and clearly once again.

The mission to create space in your mind for thoughts to grow is paramount to moving forward positively in life. It is accomplished by oscillating back and forth between curiosity and answers. I realized there is a version of life that does not have the burning question running through my head every day (that was the fallacy in some of the advice I got early on.) Yes, life has its challenges and problems and it is important to work through them, BUT it’s a waste of life to circle around the same question. It deprives your mind of answers it needs to free up space so it can grow and more forward.

What do I tell those that ask me what to do next when they have a difficult question burning in their minds and causing tons of stress? I say the question IS the answer. Your body is your sign. Whether you are wrong or right it is important to know if you are indeed wrong or right. That knowledge is the catalyst that sets off the ability to ask and answer even more important questions, building answers upon one another to form clarity. Finding that answer clears the mind for more to fill.

Why am I writing this story almost a decade after it happened? Sadly, it happened to me again this past year. I’ve given this advice to so many people looking for direction yet I lost sight of it myself when the questions began to form in my mind again. It grew so subtly over time. This time, I made the excuse that it was different since I was older. That this time there was more to lose. And, yes, the concept of not being a quitter became more of a focus than learning, growing, exploring and building. I am writing it because I was wrong again and this is a message to me as much as it is to you. Your deepest hardest questions are only asked when your mind knows that it needs to find an answer. Your questions ARE the answer.

 

 

 

What a company manifesto means to me and what I would expect it to accomplish

A Manifesto reveals the strengths and values within a company, and does so in a way that decreases the number of complex decision making hurdles for its employees in the day-to-day.

The manifesto will be “the bible” (though only a page) of reasons that lead a team without a need for individual leaders to be present, and can help create the next generation of leaders to form in the same vein.

It relieves people from the stresses and distractions inherent to complex (or seemingly complex) decisions, in the middle of the workday, while fighting in the trenches.Screen Shot 2013-05-14 at 12.22.05 PM

Picture this: A team of army rangers are falling back in the middle of an amazonian battlefield. They realize one of their platoon members went missing while under fire. What do they do? Unorganized soldiers may scatter under this pressure and lose their head. Should the next step be “Every man for themselves!”, or “Let’s hide it out until morning”? Luckily this group of rangers knows that there is one core value that prevails in situations like this: “never leave a soldier behind”. – Boom, decision made. They spend their time devising a plan to find him first and foremost  (no matter the hurdles – it will be resolved).

Values help form a strategy. Most importantly, when things go wrong, values help keep the bigger picture moving tactically. Especially when “fires” make decision making  difficult. Plans fail, but values do not.


bf3-jungle

More practically speaking, the battles on a tech company’s floor may be less tragic, but are battles nonetheless. Imagine there is a team developing a widget. It is done so with poor (if any) design, but  is backend-ready and functional. A discussion may come up around the pros and cons of deploying something that doesn’t look good but is ready to ship for testing. The debate could rage on, but, with a core manifesto that decision is already made: if the core value says design is key to our tests – then the decision is made to implement a design before deploying. If the core value says release when ready and iterate – again the decision is already made.

 

Those decisions shape a company and should not change week-to-week, problem-to-problem, or day-by-day from department to department. They shape outcomes and the character of a company through a decision tree that is easy to repeat. Consistent and efficient decision-making is more important than re-assessing the perfect decision for the situation each and every time it comes up. The written word is amazing at facilitating that.

 

Of course, we all have great thoughts and your company has awesome values already, but having them written down is the difference between an interesting legend shared by some and a religion followed by many.

Documentation, although necessary, does not substitute for a short list of values. Documentation is rarely re-read, and often forgotten; we remember “Go when green” not “Statute 32 Section 5: All those that use public road shall obey stop lights based on the following color …..”

Finally, it is extremely important that your list of values are glossed over. One lazy move away from following your values can easily turn into a utter mess over the years. That does not mean you can’t change your values. If a situation comes up, and your values does not represent how you want to act two things MUST happen: 1) You re-examine your values and change them accordingly or 2) You adjust the situation to fit your values. Period.

As for my suggestions regarding the setting for how a document can be built  as a team here are some thoughts.

 

  1. Make sure people feel heard (i.e. right down every idea)
  2. Help filter outlaws that promote restrictions (which end up being things people feel reprimanded for doing)  and turn them into the concept that create direction and productivity to help people grow, expand, and focus. It is a document of supportiveness.
  3. Use it to help give people clarity in situations that need tie breakers, or rules of thumb. For example, “future value does not trump current value” has saved our team from missing out on what we have while over planning for something we do not.
  4. Be clear on what an item suggested means when it is written (often times one person’s perspective on what “awareness” can be, for instance, is different than another’s) Be descriptive.
  5. Find a/the person that matches the essence of what a manifesto item describes. They will most likely be the champion of that thought and help keep it alive and well. Find the passion in the people and you will also find the strength in the doc.

I believe once the fundamental concepts are solidified into the manifesto it becomes a spine for current, and as importantly, new employees that come in so they can quickly latch onto and adopt the companies process/thinking as it expands in size.
There will be the debate over the items presented, and debate is good. As such, it may also be a good idea to nail down some keywords that keep the conversation on track to what we believe the manifesto points should adhere to.

The words I propose are:

  • positive
  • smooth
  • friendly
  • helpful
  • productive

If an item does not instill many of these words, for instance, then the item may be off track.

Erec Makes A Fire: A Children’s Book About Entrepreneurism

Erec Makes a Fire was successfully funded on Kickstarter! Thanks for all your support.

What is the book about?

Erec Makes a Fire is a story of how a group of kids stumble upon a cave covered in ancient writings depicting the story of how a unique young cave boy (Erec) accidentally created his first great invention, fire. The story shows how, even in the simplest of times, one is able to form a business, sell a product, and create a success. The book is written to subtly embed one of the most fundamental parts of business in a child’s mind: leveraging an opportunity when finding demand in your community and providing a supply for it. Even before cash, computers, technology, LLC formation or business entities, business and entrepreneurs thrived through observation and invention,  and they still do so today. This story helps teach youngsters, and remind their parents, that entrepreneurism is all around us and to keep an eye out for one’s own personal “fire” opportunity.

Why did I write the book?

As a person who loves the world of entrepreneurism, I also love telling a story about how anyone can turn a will or idea into a business. I have enjoyed telling that story, and giving tips on how to do it best, for a number of years through various mediums such as interviews in print, in person, and on TV. Now that more and more of my close friends are having kids I want to share that passion and story through a form that their kids can benefit from. I noticed there wasn’t much out there in the world of children’s books that took business concepts and simplified them into stories kids could love, as well as learn from. So, what else was I to do as an entrepreneur but to fill that void. Erec Makes a Fire is the first in a hopeful series of books that builds a foundation of business mindedness in our children.

Beliefs that inspired

Two major beliefs of mine contributed greatly to the creation of this story: First, immersion is a great key to early developmental learning, and secondly, kids are extremely capable of learning and understanding complex concepts early on, especially when it is told through story and analogy.
In regards to immersion, I believe that even if a child does not understand a concept introduced to them directly, being surrounded by that concept will help them become more comfortable with the subject matter as they mature. This makes the principles taught far less foreign to them, and therefore more easily consumed when they grow up, as compared to those learning the same concepts for the first time later in life.

I also believe that children can grasp complex concepts, like supply and demand or finance, far earlier in their lives than is generally taught today. I have always been amazed at how kids pick up core concepts so deeply. Yet, adults at times “protect them” from complicated concepts for worry of it going over their heads. Supply and demand can have complexities within – yes, but the basics are – well – basic and building stories around those concepts can most definitely be consumed by children. Look how well they understand other stories we give them, like ones around “how to share”, a concept that I find many adults still struggling to grasp. I remember sitting with adults during dinners as a kid while they talked to one another about their businesses around me. Over time and many family diners a grew more familiar with many of the things they talked about while still being a child. Although I was unable to articulate my perspectives on the subjects at the time I mades notes to remind myself that one day, when I got older, I would remember this: kids get more than you think.

Stickers
Sticker Collection Available Through KickStarter

Erec Makes a Fire is a new kind of children’s book that immerses young people in concepts they should be given the chance to understand early in life so that they can have a foundation for understanding it more deeply as they grow up. As such the company under which the book is created is called “Small People. Big Ideas. LLC”

How and When Can I get it?

The first few copies will be made available as gifted items through a fundraising drive on KickStarter. I have my initial proofs and prototypes complete. Based on how much I can raise through KickStarter I am shooting to making it available by the spring of 2015. There will be special gifts given out through KickStarter in addition to the books themselves to make things more interesting, such as: signed copies; custom printed copies; packages including digital, print  version and stickers; as well as custom designs where our artist injects a characterization of your child  into a character in the book! Books will be made available through softcovers, hardcovers, and ebooks.

About Kick Starter:

KickStarter is a crowd funding platform that allows projects to get funded before they start. It is a great way to start a business or project and works perfectly with the Erec Makes A Fire book as the funds are only released if the book gets enough demand. The simplest way to think of KickStarter is this: think of those PBS drives on TV, the “If you pledge more than $50 you get this free tote bag” type of promotions. For a project like mine my gift will be an early copy of the book and other creative unique offers mentioned above that only funders will be able to receive. You can read more about KickStarter here: http://www.kickstarter.com/help/faq/kickstarter%20basics#Kick 

Erg: Erec's first customer as a Sticker
Erg: Erec’s first customer as a Sticker

Why Did you Spell “Erec” with an “e” instead of an “i” ?

The names of the book are witten with some historical significance in mind. Homo Erectus and Homo Ergaster are the scientific names for the two homonids believed to be around during the time period fire was discovered. So, the characters names in the book take each half of each of those names: Erec, and his friend Tus are the first two characters introduced. Followed by his first two customers Erg and Aster. Just in case though, we made sure Eric Makes a Fire works too 😉

Slides of Creative Process

Original Idea Draft
Original Idea Draft

Draft Rewrites
Draft Rewrites

Preliminary Sketches and Character Development
Preliminary Sketches and Character Development

Backdrop Scene Development Sketches
Backdrop Scene Development Sketches

Story Board Final Sketches
Story Board Final Sketches

Final Sketches Converted to Digital
Final Sketches Converted to Digital

Final Layout Colored for Publishing
Final Layout Colored for Publishing

20130211-P1090359
Printed Proofed Books

Sticker (kids) Proofs
Sticker (kids) Proofs

Get in to the cheering section and like us at http://www.facebook.com/ErecMakesaFire, and subscribe to email updates as we neat the big release here (http://signup.erecmakesafire.com)!

Fake Response Server: Slow response time generator

Here is another quick tool built on GAE AWS. This one is super simple, but pretty handy. Today Twitter went down, and somewhere in our system we were using the Twitter API to display one of our status feeds. Them being down became us being slow.

Well, I wanted to do some quick tests to keep this from happening again, but byt the time I got to it Twitter was responsive again. To fix it I would need to create a bad URL. The crappy thing is I wanted a slow response time, not exactly a bad response/error. Creating a 404 error is easy, just go to some url that doesn’t exists and test. But I want a slowwwww response.

I quickly searched Google for something I could use, and didn’t find one. When I realized I would have to create a fake pause endpioint somewhere I figured someone else out there might benfiift from a quick public version of this system. So, I created fake response server. The first default endpoint available sleeps for a variable time.

fake-response.appspot.com (Update: Moved to AWS)

https://6wrlmkp9u2.execute-api.us-east-1.amazonaws.com/

and add a sleep param to change the sleep time in milliseconds

fake-response.appspot.com?sleep=5 (Update: Moved to AWS)

https://6wrlmkp9u2.execute-api.us-east-1.amazonaws.com/?sleep=500

Nothing major, but why not publicize the tool incase it can help some other shmuck out there like me 🙂

Cheers.

Finally audio based commands and tagging that doesn't suck

QR Codes

I have kept an eye on QR codes for a few years now; it is a simple technology. Simple technologies win because – well, they just plain work. So many new technologies do a better job of adding complexities to solve a problem than they do to decrease them. I mean, as an example, the majority of the world still uses headphone jacks and earbuds to listen to their iPod, even though blue tooth is a great technology that removes the need to use those easily tangled cords. BUT those annoying tangled cords are still far more reliable and simpler to use than bluetooth. So we wait for the “simpler” technology to become – simpler. QR codes have the same M.O. They are simple and work, but they are also annoyingly primitive. For example, that QR code image you see on the left of this article means absolulty nothing to you visually. Yet I use it to take up space on the page, because it can provide value if you are willing to pull out your phone and take a snapshot of it.

The QR code works becuase it is a unique image that contains data within all its black and wite specks, like a data finger print or a bar code.  A device with an app that can read those specks convert the “fingerprint” into a equally unique URL that the app can then direct you too.

A more complex, yet more direct solution, is to have an image that is human readable, like and ad, act as the data rich finger print. That way a person can either take advantage of the precious realestate of the ad by siimply reading it, or taking a picture of the ad and get directed to the related URL. It looks like technolgies such as Google Goggles are on their way to crakingthat nut. For now however, Google Goggles is not more reliable or simpler to use then our ugly, cryptic; yet simple, and relaibale QR code.

Audio Commands and Tagging

 

The use of audio commands has had a problem finding its place as a “simpler” solution to the everyday problems they always claim to have solved, but as often fall short on expectations. I don’t know how many friends of mine have had voice-command car systems that in the end just dont work as reliably and effectively as turning a dial or pressing a button on their dash.

John’s car: “bee-eep. Can I help you?”

John in his car: “Call Sean”

John’s car: “Looking for Jons and bathrooms in the area.”

John: “Ugghhh! No , Call Sean!”

Car: “Bee-eep. Thank you. Calling Don now…”

John: :-[

Siri seems to be making voice commands better, or at least marketing it that way, but the dream of talking to our computers, as the easier way to interact with them, still seems as far away as it did here (See min 3:00 in 1984) http://www.youtube.com/watch?v=2B-XwPjn9YY

 

 

Okay, Siri and Google voice commands are doing better, and getting used more use than I have ever seen in the past with similar technologies, so that is promising…but yelling into your phone to “search for near by bars” in a crowded room is – well – shitty.

Shazam made some great leaps forward in the audio tagging and command space by finding the unique characteristics in songs, and turning that into pertinent data. That uniqueness is used so that the app can determine the song name, and its singer, just by holding up your phone to a song you hear on the radio.

This year, as some you may have already seen, Shazam has gotten into the QR related space by bringing their technology to TV comercials. When you see the Shazaam logo on a comercial open your Shazam app and let Shazam listen to the commercials unique audio. Their ability to link the unique “fingerprint” of sound coming form the commercials audio, and turn it into useful data allows them to link commercials to open a website on your device; much like a QR code. It is neat because the audio is as easily interpreted by human ears as it is by the Shazam app; maximizing the use of the allotted ad space. Unfortunately it falls short in the fact that it is impractical to expect a viewer to chase down their phone, open the Shazam app, and tag the comecials audio, before the comercial is over.

Audio Sync

 

I think I just saw a technology that actually make sense. Practical in its use, efficient in it implementation, and it solves a problem by decreasing complexity more then it adds.

In this case the audio is used to sync your tablet to a show you are watching. With this strategy you’re truly decreasing the steps needed to get what the show, and the viewer wants. No extra steps, no rushing for a unrelated app to open a web page, no ugly QR code images taking up space, just simply a way to help the user link the app their are using to the show they are watching.

It works by listening to the show you are watching, and applying the Shazaam like technology to the audio of the show to recognize what part of what show you are watching. The data is processed, and instead of just opening a web page, it sync your application’s experience to meta data surrounding the show on you TV. You can then interact with others watching the same moment at the same time, or listen to back stories related to the segment. Cool beans.

 

 

 

Team City Monitor (with coverage history) for GAE

Per my last post about the splendor of GAE, below is one example of a tool I built for us at Socialize to keep an eye on code coverage and lets the group know if a build is broken (if our tests have failed.) This script is built to run on Google AppEngine, checks against a TeamCity Server install, and expects that each project in team city has code coverage outputted to its artifacts folder.

What is C.I. Server and why is it important?

C.I. stand for Continuous Integration, and is a system used to constantly/”continuously” checks to see if a code base is “working” or not. Team City (by JetBrains) is a product made for that process. Usually it is used to run tests against a code base to make sure it is working as expected, as a part of the QA life cycle. These tests are made up of “unit tests” that are created by the developers whom write code to test the code they are writing. It can be a bit odd for those that have not ever done so, but it is quite important when trying to deliver stable code. In short, and in its simplest form, this whole system makes sure new code/changes doesn’t break old code already in place. You can read more about these processes and purposes here: Unit Testing & Integration Testing.

What is code coverage, and why is it important?

Code coverage examines how much of your code is being tested. For instance, you may have a C.I. system in place, and a unit test frame work running within it, but if the tests only test/”cover” 1% of all of the code you aren’t really delivering a level of confidence you should be. In this tool we track the coverage percentage over time. Seeing it as a graph helps recognize dips in coverage easily.


Download Team City Monitor for GAE


Or fork and contribute on GitHub

What do you and Sonic the Hedgehog have in common?

Sonic and his rings
Sonic and his rings

Have you ever played Sonic the hedgehog? Man, what a classic! The objective: Get your hedgehog, named Sonic, to jump, run and even roll through a stage, avoiding the array of animal-ish enemies, only to reach a guarded exit, protected by your arch nemesis, Dr. Evil. Beat him and the entrance to the next level is opened. Keep this up, level after level, enemy after enemy, and you will win the game. — But wait there’s more! If you are attacked without a collection of magical “rings” in your possession, you will die. With one or more rings you can narrowly avoid death by attack.

So which was more important, getting to the next level, or acquiring the rings? Well, any kid would tell you: Duh, both! Obvi. If you only collect the rings you may never get to the end of the level. Alternatively, if you only try to get to the end of the level, rendering yourself ringless, you dramatically decrease your chances of survival.

Of course, one could play the perfect game, dodging all would be attackers, and avoiding falling off cliffs to a spikey-floored doom. By doing so you would indeed win the game, just as anyone else. But who could make it through all those levels without one misstep, one slipped finger, or distracted moment when your Mom calls you down for dinner? I’m going to take a stab at it and say — not a single person. So, thanks to those gracious creators at Sega, you were given those wonderfully magic rings, giving you a fighting chance. You and everyone else jumped at the opportunity, capturing as many rings as you could. You mitigated risk, balanced your options, and grabbed on to what ever you could, outside of the clearly laid goal of completing the level, to of course do just that, complete the level and win the game; achieve success.

That is not a theme reserved for just hedgehogs named Sonic, or any game for that matter. Success is a goal some of us can see, and once we see it, we direct our focus directly at achieving it. But it is often that deterministic direction that creates a far more subtle misdirection.

Nine out of ten startups fail, right? I bet most of them are hard workers and/or have great ideas and/or have a focus and/or goals. A major hurdle to overcome, one that is far less obvious then the cliche advice to work harder/smarter, and the basis for why so many startup fall victim to those one-in-ten odds, is that it is the very focus on the goal that can cause the unbalance in your business, and ironically dooms your chances in achieving it.

Success may live on a straight-line, but the line seen is not necessarily the path to take. The best path is almost always one that dances around the line formed. Looking away, towards an entirely different direction, can reveal a path with far less hurdles when the focus is returned to the goals directive. You must let something go in order to truly have it — a cliché theme that works in almost any environment, and often takes a lifetime to master. Simply put, our “rings” come in the form of friendships, support systems, a passion for what you do, mistakes that need to be made, failures to learn from, vacations to escape to, and random ideas that inspire. When we remember to grab onto those rings when the opportunity to do so arises, or even sometimes when it doesn’t seem like it can, we will be far more able to last the “attacks” the startup game will inevitably throw our way.

So my fellow hedgehogs, should you grab at all the rings you can, even if at times by doing so you are unable to race towards the goal? Most definitely! Any kid who had a sega will tell you: you have to do both. Duh! Obvi.