Internship at Metalworks – Week 3 [8 June to 12 June 2015]

After a restful week, I felt compelled to do something with my week. First, I met the communications manager Daylon, who reminded me and introduced me to a set of tools that really allowed me to streamline my resources. But, I think the best part of this week was understanding the development of a project from a client, as well as the back and forth feedback with my fellow colleagues. I was also allowed to immerse in learning two more types of software in detail, which I’m grateful for. Also, I decided to standardize the way I write my weekly posts. They should follow this framework (of course in javascript object notation):

var outline = {
Weekly wrap-up:   One or two key take-aways,
Daily schedule: Important things in each day,
Key questions: Questions that reflect the important things I’ve learnt this week,
Conclusion: Anticipation, intent for the next week
};

Yup, so this is how my week looked like:
Monday: Angular.js
Tuesday: Project Brief / NFC Research / IFTTT
Wednesday: NFC Research / Conceptualizing / Sketching
Thursday: Refining / Intel Edison
Friday: Feasibility Proposal, App Testing,

How was learning JavaScript like?

The basics aren’t too difficult to pick up, but I think the best thing to be wary about is getting handheld through tutorials – Codecademy does this really often. It is easy to take the helper code for granted and just either 1) copy mindlessly or 2) Forget about the helper code. It is important to really break down the syntax into understandable parts. If it helps, go away from the tutorial, and do up little snippets of code to run and test it. It definitely does not help to fully rely on Codecademy. In general, something good to do is to search “<insert language> best way to learn” or “<insert skill> best practices”. Google returns some really useful resources.

But in case that fails, I’ve a few links that I’ve found really useful in learning JavaScript.

Javascript is sexy: Gives a step by step tutorial on how to approach Javascript, including best practices, other resources etc.

And then after going through that tutorial in tandem with CodeCademy, try learning some libraries. Real world applications that beat CodeCademy hands down. It’ll also improve your ability to recognize syntax and understand classes, inheritance, object oriented programming etc. to a much higher degree

Ng-Newsletter: If you want to learn Angular.js (one of the 4 libraries needed to be a full-stack JavaScript developer), this is a great resource. Explains all the concepts within Angular so clearly, I hardly needed to take notes or write them down.

Risingstack: For front-end development, React.js offers greater flexibility than Angular. Haven’t got the time to dive into this, but it was really good just for starters.

These are the three websites that made my transition a lot easier, and I’m sure there are other sites that do a good job too. Keep searching! 🙂

What is NFC and how can it be useful?

So for one of the projects, we had to use NFC. NFC stands for Near Field Communication, and very much like RFID (Radio Frequency Identification), uses induction coupling to send information over. Place two NFC enabled devices near each other and they can transfer, write or read data.

Howstuffworks does a pretty good job of explaining NFC operations. But we had a few questions about NFC. Can it sustain a connection over time? Can it read multiple signals at one go? Can you attach more than one device to an NFC supported device? These are great questions that if you could answer them, open up tons of possibilities. Some possible solutions include introducing delays when programming the NFC chips, using micro-controller to collect the signals etc.

With printable NFC stickers, and NFC tags going for cheap, especially these DNFC tags (which can be plugged straight into an Arduino by an I2C bus), it’s going to be really a lot easier to use them.

How is a project for a client run?

This was eye-opening. It first starts with a client brief. On trello, there will be a background of what the client wants, and the tech director would take around 10-15 minutes to brief us on the project, as well as some preliminary ideas. We would give our input in the form of feasibility checks or other solutions that do the job a lot more efficiently, and get down to doing some research.

Usually we get going on feasibility first, or whether the concept can run in the first place. We’d have to tweak the electronics involved, the type of coding involved, as well as whether it is fulfilling the goal of the customer. Then we’d go search for suppliers if we didn’t have the stock. Very commonly we’d run into a roadblock and then we have to review our progress. Roadblocks come in the form of out of stock goods, a sudden consideration about form factor / cost / complexity, and we get together to re-evaluate our options. This can take up to 3-4 days to get it right.

Because Metalworks does mostly prototyping, we rarely ever push it to production phase. Meaning that as long as we prove that the concept works, we’re done with the project. In this way, we’re managing our costs the best we can. But the prototyping is also what’s most exciting about the job, because the feeling of being able to create something is awesome. When we managed to come up with a fully functioning prototype for our client, I felt a sense of accomplishment and knew that this would just be the start of many more cool things to do.

Hopes for next week

I really want to immerse further into JavaScript and take the chance to do it on Sunday / Monday perhaps. Also, Android development is firmly in my focus. I’ll take it by the horns real soon.

Meanwhile, let me leave you with the awesome middle man application that is IFTTT. It does lot of the grunt work you do and makes you a lot more productive. You come up with recipes that tie in 2 apps and let IFTTT do the magic.

And… team photo this week – observe how we somehow coordinated colours without actually coordinating hehe.

Team Photo!

Leave a comment