One last project at GA

Time is almost up! One last week and we’ll be official graduates from General Assembly’s web development course. But before that, one final project. One final push to build something–anything–for fun (and practice, of course).

I shortlisted a few project ideas in preparation for this week and I’m excited to be working on a reading tool for slow-reading that I’d personally want to use. Slow reading, if you’re not familiar with the concept, is like slow cooking or slow living; you read like in the old days, more deliberate, taking time to digest a text. (Slow reading might just also be something I just invented. I don’t know, and it doesn’t matter.)

Deciding on this project wasn’t easy and I honestly don’t feel particularly strongly about this over the other projects (drone delivery fleet management system, or a WhatsApp with group expiry dates). In the end, I decided on the one that felt most interesting.

Technicalities of the app

It’s going to be a web app.

I think it will involve the use of these modern web dev techniques:

  • Consuming APIs (content)
  • Using a CSS library (likely Semantic UI)
  • Mobile responsive design (sizes and swiping)
  • Using jQuery (AJAX and animations)
  • Building on Rails backend with PostgreSQL database
  • Combining a previous similar project’s features, somehow)
  • Using ReactJS for elements that can benefit from being reactive

Just what I think right now. Reality is likely to be different. But the goal is clear to me: build with whatever is necessary, and nothing more. I’m not going to use anything overly sophisticated just because. Use of any of the above will come from pragmatism. Having been through 4 other 1-week projects, I think I can pace myself better for this one.

I’m tempted to look back now and think about how far we’ve all come, and to start thinking about what companies to apply to and so and so. But I won’t. It’s time to focus. It’s time to strap in and prepare for one final helluva ride. What lies beyond will have to wait!

Software developers, please learn rapid prototyping

a person using an iphone next to a laptop

Our class recently had the good luck of having a really good developer come speak to us about web development. Chardy Wang is the CTO of Stacck, a local company building products for F&B teams. His talk was held together tightly through one thread: how to develop web apps.

It’s one of those talks that would have been excruciatingly boring to me just a few months ago. This time it was great. He spoke directly to the problems we were facing every day writing code for web applications, and really for the first time, I could relate to a technical person. Big step up for me personally.

One of the most poignant memories I have of his presentation was when he answered a question from one of our classmates. The question was, “What was it like when you were just starting to build Stacck (the product)? As in, what was the approach of your team?”

It’s a great question, because while we’re the engineers behind the actual product, and are inherently valuable because of it, it would be a mistake to rest on those credentials to get us through our careers. It’s not enough. To build a great product that people actually want to use, be it web-based or even software-based or not, we must dig deeper. We must ask and come up with an answer to this simple question:

“Who are we building this for?”

Chardy and his team, perhaps under his experienced leadership in building products used by actual people (the number doesn’t matter as much as the fact), had a counterintuitive approach. Well, it’s unorthodox to developers anyway. Their approach was to not code at all.

Rapid Prototyping for Software products

Most of us would by now have heard the term “rapid prototyping”, used to refer to the process of quickly iterating through physical product prototypes using 3D printing tech. But few of us think about software that way, not even developers.

I think it has something to do with the fact that software development is, in 2016, fast by virtue. Fast in the sense that if you already had the code at hand, deployment wouldn’t involve talking to manufacturers and suppliers and moving things around the factory floor… it would just happen within a day on Amazon Web Services. All of a sudden, everyone with the right URL can start using your product.

This expectation makes software developers miss an important point of rapid prototyping – the user. Since building a product is as simple as flipping open our laptop and writing code, the notion of not doing that and instead spending time on thinking about the user (which produces nothing tangible) feels like a waste of everybody’s time. “Let’s build a minimum viable product and then we’ll test it.”

Often times, I find that when a developer says “let’s build a product”, it’s not the same as when a business guy or UX designer says it. Developers mean build, as in build. Something functional must come out of it.

Most people in a hackathon, however, don’t think that way. What they’re really thinking is “let’s conceptualise a product.” The actual functioning product can come after we validate our assumptions about what our customer wants.

Ego is the enemy

Here’s a hard truth that we, developers, need to face up to. Developing a product without any coding just doesn’t feel like development at all to a software developer.

But that’s a weakness, not a strength. Why?

Because coding takes a disproportionate amount of time compared to every other part of the product creation process. If you’re not a developer, ask a developer. Even they will agree with you.

I remember what it’s like to not know the level of complexity involved in creating a piece of software. I was constantly perplexed by what the hell goes on in giant tech companies when the products from them don’t seem to be changing that much from a day to day point of view. Most days of the month, Facebook stays the same; the way I’m used to it. Occasionally a new feature like rich responses (whatever they call it internally) comes along that is palpable as a user. So how does that warrant the hiring of hundreds of developers?

I’m alluding to the obvious. Coding is hard. The process is complex and tedious. Tens of moving parts have to work together seamlessly. Then hundreds, maybe thousands have to work well enough with one another as the product scales. But even at the starting phase, creating actually-functional software takes at least 5 to 10 times the time needed to build a decent wireframe with something like InVision.

So Chardy and his team approached the start of their long careers at Stacck the smart way. They, the development team, built wireframes (mock ups) of the product without writing a single line of code, and they showed that to their customers (or whoever they thought were their customers at the time). They received invaluable feedback, refined their mock up, and went out to get more feedback.

Only after iterating through a few cycles of “customer interviews”, as they call it in the startup community, did they start hitting Terminal and doing git commits.

To me, that’s what rapid prototyping should be about, even for software creators. Build fast (with rapid mock-up prototyping), fail fast, then succeed. This way, when we finally write our first line of code, we can give it our all with confidence.

(Image: Jonathan Velasquez)

The reality of game development

grave matters gameplay screenshot
Grave Matters, a game by our web development instructor and two friends

Our instructor at General Assembly is also a game developer, and he recently showed us his wares. It was my first glimpse into the world of game development and I found it magical.

“Oh, the moon is flat!” That was my first reaction when I witnessed Jeremiah rotate the ‘camera’ in Unity, the software on which he game (and many others) is built. “Yeah, always make things flat if you can, because it’s lighter to render.”

Game development is really cool, especially when you look beyond the surface. Games like The Sims force us to think about reality in a new way. When I saw that the moon in Jeremiah’s game is flat I couldn’t help but think about whether our own moon is flat. It probably isn’t, otherwise the Apollo astronauts would have warned us, but the thought experiment obviously extends farther to interrogate other aspects of reality as we know it.

There’s an interesting documentary that I was just introduced to by my friend Mikella that explores this (and many more mind-boggling questions) called Through The Wormhole, of course narrated by the god-liest voice of Morgan Freeman. (Take a look at the name of the episodes from season 1 to 6 – it’s a ride in itself.) In the pilot episode (can you call the first of a documentary that?) titled “Is there a creator?”, the idea of our universe being a simulation is seriously entertained.

It’s particularly fascinating for me watching it now as I become more and more a programmer each day. Even simple web applications involve the creation of objects that appear on the screen that can be thought of as entities. Write enough code to govern their behaviour and interaction with one another and soon what looks like a new universe may be born. Rattyduck’s nodeplay, a project by a friend of a friend is an example of what that might look like. The Sims is the literal manifestation of the idea.

Listening and watching Jeremiah explain the way his game was made was a real treat. I’m not sure when I’ll ever get another glimpse into the life of a game developer, but I look forward to it because I know that in their minds, they would have entertained the thought of creation way more than I would, and that’s really interesting. While most of us toil away at our very humanly jobs, these folks create parallel universes that our minds (and soon, perhaps, with virtual reality tech, our physical bodies) can inhabit and explore. It’s a shame that the economics of game development happens to be the same as music. You either have a hit or a song that will live in obscurity. Good, passionate game developers like Jeremiah have to go against logic and forsake plenty to pursue their job, which is to say, they most likely won’t.

And even though I appreciate the idea of creating and entering another (game) world, I have to admit, I can’t muster the courage to squander time on it. The pragmatist in me is growing in strength as I enter my late twenties. This is the time to think about making an impact, earning a decent wage and living my last few years as an irresponsible adult. The only game I have time for is this one.

Drone delivery

drone hovering over forest

Worms (the game) is the first thing that comes to my mind when I think about drones and air-drops. “Special delivery!” and some cargo drops from the sky and lands softly with the aid of a parachute.

This being 2016, there is of course already a startup working on making that an actual thing. Flirtey is that company with a strategy that is surprisingly similar to the Worms air-drop. It flies its drones autonomously and dangles the cargo with a string until it reaches the ground, and then detaches and flies back to base. Looks cool but watching the video really got me asking “Why?” – why not just land the drone? A hovering drone with a cargo dangling and tugging on it is more precarious (to me) than a drone trying to do a landing in an urban area. Not sure why the people at Flirtey decided it was a good idea. They seem to be drumming to their own beat with strategy as much as they are with their name.

Drone delivery is a fascinating space. Heck, drones are interesting to begin with, both in industry and recreationally. I wish I could say I’ve flown one but till this day I haven’t flown one. That day should come very soon when I can’t resist the temptation to get one “for the family”.

I think drones are currently on the cusp of explosion (figuratively) of adoption by many businesses. Amazon Prime Air was announced in 2013 with two cool videos about “delivering in 30 minutes.” They also have a cool, geeky website to boot. Flirtey has already started to deliver Domino’s pizzas in New Zealand and medical supplies from 7 Eleven in the United States. The US military drones take out enemy targets without risking pilot casualties (this of course can be a whole discussion altogether). Casey Neistat has been using various drones with video cameras to shoot beautiful videos of the places he visits, and mostly of New York City. Drones are being used in many ways and people are growing increasingly fascinated with them.

DJI is already a dominant manufacturer of consumer-grade drones. A few days ago, they released their best drone yet – the DJI Mavic Pro which with a little squeezing, fits into a cargo pants and has collision detection and avoidance technology. GoPro also recently launched their first consumer drone called the Karma. Even without researching, I know there are probably 5-10 other startups around the world in the running to gain a piece of the rapidly growing consumer drone market.

So consumer drones are becoming mainstream, and the world’s largest e-retailer has begun development of drone-delivery technology since 2013. What’s next?

Things will probably start to look quite similar to the recent upheavals caused by Uber and Airbnb, perhaps with one additional obstacle that is the Aviation Authorities. If we’re truly going to enter a Jetson-esque era, we should expect resistance.

What I think will be the next big leap is the creation of sustainable businesses that subsist on managing drone deliveries, with the help of a few far-sighted governments, with Singapore being a likely front-runner. Pilot programmes would be risky at first, until a startup hits a home run in terms of execution and negate the risks. I feel like drone delivery is in limbo right now as companies are still trying to get their technologies right. As soon as one crosses the hill, we should witness an avalanche of businesses that do and use drones for delivery.

Are there hurdles? Of course! A drone might fly into something and fall to the ground and hit someone or something expensive. One might fly into a manned aircraft and cause a “drone-strike”, needing another Miracle on the Hudson. What about the possibility of a hijacked drone delivering a dangerous parcel? Or hackers that reroute a fleet of drones on a kamikaze mission? These are tricky issues that need to be ironed out. But like cars that are legally allowed to drive at 100 km/h, drones will zip around next to buildings and among people. I think it’s a matter of one or two decades before we see that. If not, I’m at least sure it will be in my lifetime.

I honestly hope that the flame of innovation in this area won’t put out by mega-corporation push-backs and government bureaucracy. The time for drones is now!

(Image: Jason Blackeye)

Treasure! That’s just what you are

bruno mars treasure music video
That’s Bruno Mars

Today, for the third time since we moved in to our new apartment a year ago, we snagged a great deal. We found three pots of fake plants sitting by the garbage and took two of them home for free. I know an amazing deal when I take one (or two).

It’s a funny thing, knowingly taking what people no longer want. They feel less valuable just for being put near the “real” trash. Some times the item being discarded is old or broken beyond repair, yes, but that’s actually rare. Most of the stuff being thrown away are just, to quote some famous architect, “matter in transition”. To that family, fake plants probably just aren’t the sort of matter they want around the house anymore, and so they trash it. I happen to be newly interested in gardening and greenery around the house and so picked those pots up. The right place, at the right time.

But it’s also a tragic thing, because we seem to be throwing out a lot of good, still-useful stuff. In an ideal world, matter out of place will just transit from a wrong place to a right place, not put completely out of use in the landfill. The interim solution in this reality is to put our items in a centralised place (like next to the rest of the trash) and give others who might have a use for them a small chance of picking them up.

As mentioned earlier, we’ve benefitted from other people’s “trash” three times in one year. First was a heavy-duty metal wireframe for kitchen use. It was almost exactly what we were looking for. Then came a white collapsible desk, which is now standing next to the single-seater sofa in our balcony for holding our coffee mugs. Today, we snagged two beautiful fake plants.

Matter in transition is a problem. Is there a business you can think of to turn this into an opportunity?

Accepting Rails magic

This is the order we learned about web development:

HTML —> CSS —> JavaScript —> jQuery —> Node.js/Express server —> Postgres SQL database —> Heroku deployment —> Ruby —> Test Driven Development —> Ruby on Rails server

By the time we started on Rails, most of us already had a good grasp of JavaScript client-side programming and Node.js plus Express server-side programming. In other words, we’ve experienced the modern version of bare-bones server coding before starting our exploration of Rails.

If you’re a developer you’d probably know where I’m going with this. Rails is like magic when put side by side with Node.js/Express. Seasoned developers also say that there’s almost no other server-side language and framework that works more intuitively than Rails.

Rails is magic.

But it is sometimes too magical.

“How does that work?”

“Is that part magic too?”

“What the hell does this (line of code) do?”

These questions and more are the demons we have to grapple with when coding in Rails. So far though, I still like it more than coding in Node-Express. It handles most of the repetitive and complex things for me so I can focus on the business logic of my server and, with the saved time, work on improving the overall product.

project group discussion

This coming week is our third project week at General Assembly. It’s the first and only time we’ll be working in groups and I’m very excited about how it will turn out. The atmosphere on Friday was perceivably different from that of our previous projects. I think everyone is thrilled to be working as a group of developers for the first time. Many issues remain to be ironed out, like what Git flow to use (centralised or feature branching or gitflow or forking) and how to split work strategically to reduce time wasted on resolving merge conflicts. It’s going to be a fascinating week!

I’ll be working with two fantastic team mates Bright and Mikella to build an ad-hoc skilled-job portal to match service providers (eg. electricians, web developers, make-up artists) with those who seek these specific services. In 2005 this might have been a novel idea. While it would have been better to work on something useful and never been done before, we’re choosing this to prioritise our learning over an impressive portfolio. I believe if we get our Rails fundamentals right, we’ll be a lot more confident in building web applications in the future, and that is worth the investment in time now.

Expect a review of our project some time soon. In the meantime, keep your head up and live fully!

Who my dog thinks I am

“God, please make me who my dog thinks I am!”
Eckhart Tolle, The Art of Presence (audio)

walking the dog

Over this week I’ve been listening to the recording of one of Eckhart Tolle’s retreats on mindfulness and the fullness of every moment. It’s been a real treat being a listener from a distance. I can only imagine what it was like to be in the room when it happened, to feel his calming, understated presence.

When someone is fully present in the now, not thinking about something in the past or dwelling in thoughts of the near or far future, it shows. It shows in the person’s body posture, his eyes, and, for me to sense it through the recording, his pace of speech. Eckhart Tolle spoke with deliberation and since his mind is not living on future time, so to speak, he didn’t try hard to impress the audience. I imagine this was his line of thought: Why should I care what others think of me when there is only the now that we live in? That is a problem that lives in the fuzzy concept of “the future”, and it does not apply here.

He brings us through many ideas that we would typically classify as “spirituality” but which I consider to be ideas of life. So I see it as philosophy, maybe. Perhaps with a dash of sociology and psychology.

I’ve heard of the name Eckhart Tolle before but don’t remember where, but when I browsed Audible and stumbled on his recording, I decided without hesitation to pay for it. I must have secretly trusted him even though I knew nothing about him. I didn’t even know that Tolle was pronounced “toll-leh”. How strange that this sequence of events played out to this point. (But I won’t dwell on that thought, unless I’m doing a deliberate study of my personal history, because it would mean living in the mind and in the past.)

The quote I started this post with is probably borrowed (by Eckhart) from somewhere but its profundity is not at all diluted here. He brought up the fascinating example of nature as being one and present and moved towards animals and the animals we keep as pets, and at some point, he brought the dog into the picture. Dogs! My senses heightened. I had for the longest time wondered whether my dog was the Buddha reincarnate. You should see the way he looks at you…

Alas, the joke waiting at the end of the road is that dogs don’t think, they just be. It’s all us…