Saturday, 24 March 2018

What I have learned with React Native in 1 Month

Hello again, so this post about what have I learned with React Native within 1 month.

1. I Always Thought RN is the Future but don't know How to Start. 

I am a long time iOS app developer. I studied iOS since I was in university, back then, I learned by myself, with book. I realized that the process was super slow. But I managed to published a simple quiz app on the App Store, then I work on a local company on pursue to develop more iOS apps and related technologies.

Fast forward, I learned stuff related like Laravel, Android, and UI/UX design with Sketch and Illustrator. I learn little Ionic, and now should I jump into React Native. With the help of community, I jumped in. It's was not easy when I learn it casually. I searched for the complete video tutorials. And write and listen to it completely.

I finally can grasp the essense of RN. It felt so good too.

Well another think is I think RN is good for client work. And to help people to develop apps for iOS and Android without developer too much hassle to maintain it.

2. Redux is Hard

The paradigm is different. With iOS I learn MVC, singleton, notifications, app delegate and so on.

With RN I got Redux. Not only that, there is redux-thunk, redux-persist, lodash. All that JavaScript libraries goodness.


3. Expo is Slow

I tried expo and not suitable with my workflow. Plus it's seems limited for any other library. And not customizable as it doesn't provide iOS projects.

4. Firebase First

Being a developer, and develop just RN can take so much time, so I decide to move fast with Firebase. It helps me to develop apps that need server faster. If the project is large, so then I should code with connecting with custom server.

5. React Navigation

This is the way to go for developing apps.

6. Native Base

I haven't touched so much on this, but to make app looks good enough, use this kind of libraries.

7. Icons Images 

I didn't notice that to put an local image can be so much pain. And using vector library you have to use link. React-native 'your libs' link. What it does is to add appropriate stuff into Xcode or Android Studio project to make it compatible.

8. JavaScript 

I have to jump into learning JavaScript more deeply especially to understand the nitty gritty about React Native itself with JavaScript. You know about state and props.

9. Yarn All away around

I just dismiss the npm for yarn. I found out using yarn better, and had no issue so far.


10. It's Not that Easy

To be working with something new and foreign. Things usually don't come right at first. It can be stressful, feeling not knowing so much. So having community support is good to get the motivation and keep moving.

11. Visual Studio Code Helps

Microsoft creates this cool editor called 'Code', which is an code editor that can add cool plugin that helps you write RN better and less pain and less stress. Try it to believe it.

Conclusion.

I love the outcome of what I do with programming. I know it's hard to do with programming and all little words that one of my friends called it 'cacing' (worms). Haha, it's can be hurt or can inspire you that all the codes you make is not everyone can write. The ones that have brainpower can do. Actually it's hard to do coding when you are not well, when you are stressed. So the sanity is required to write code.

RN is pretty delicate and i urge to learn from master so that you can be less stressful and can do more with less time. Really, I am keep learning because I am just learn it for just 1 month only.





L in LUCK

Hey guys,

Hijazi in the house, so today I have a thought about L in LUCK which is 'logistics'.

I learned about LUCK in a class with Azizan Osman in IMKK a few years ago.

Well, logistics is, your environment, your surrounding. And as for an indie entrepreneur or solopreneur, to be on your self can be very hard. Surely can, but for the long run it will be tiring and will tear your motivation. In that case, we have to be in the right surroundings, good groupings. We have to choose wisely.

I love to be an entrepreneur, I love to make my own decision, to live how do I want. I am able to navigate the journey I think can give impact to myself.

I create apps, many ideas come from myself or others to solve my own problems, and I enjoy the creation of creating ones.

On my position of being a developer, iOS, it's not good enough to stay in a silo. That's why being in a company is good too, you are surrounded by like-minded people. Well if you are solopreneur, chances you will work alone, with less human interaction, I heard this from Twitter. This guy said it's kind of depression with all work and no interaction, true story. I am lucky enough to have family that I always can talk and play with (my daughter).

But in work sense, being professional can be sometimes really boring especially when you are alone. Business is about helping others. So to be relevant, and keep relevant, I ongoing to join like-minded people of having interest in this technologies. iOS, Android, UI/UX, Laravel and React Native.

Previously I joined MY CocoaHeads community, it's an awesome iOS developer community. Usually held in KL area. I joined when it's usually held in Mindvalley, Bangsar. It's so important to mingle with local developers because they share things that happen in their companies. I am not in any company so you can't tell how valuable this kind of sharing right.

Life keeps going, and eventually, in Cyberjaya, there is also tech community called DevCon. Here is more diversified, there is a long list of techs enthusiast here. Mobile development is one of them. DevCon organized 3 big events so far, I had the chance to taught iOS app development. But recently, the number of iOS participant has been declining. Hmm, why iOS developer not so many? In the business sense, this is not even a good thing right. So I ask latest cross-platform React Native solution to take lead.

The result was the receptions was better than iOS, but on the other side Android reception as usual super large as usual. Next time around, no more Android but React Native for iOS and Android.

I will take lead for that. I actually seriously learn React Native for about a month now. The paradigm of real native and React Native is different. I take some time to understand it. I still need to refer to previously written project to write a new one. Especially on Redux topic.

I will write what I have learned during 1 month of learning React Native. And will present on next meetup.

Alrite, for summary, L, logistics is the key element to drive your self forward towards living your dream. You cannot live in a silo, find good people, find good community to join, be participative and live well.

Alrite, that from me. See you on next post on what I learn with React Native.





Thursday, 8 March 2018

User Journey Diagram & Use Case Flow

Hello gang,

This is Hijazi. I will write on user journey diagram and the use case diagram.

On app or system development industry. Development skill is important to make sure that we can make things materialized or workable. Not just on paper. But now we have to put our capabilities on paper. We know we can do it, but we have to step backward to oversee what we will make.

By planning ahead we can see the birds-eye-view of how everything working together. We can plan what classes that we need before we go into UI details.

Another thing is the use case diagram. We cover the most important aspect of the software when it's used with multiple roles. This will show what's each role will do, what system will keep and what it will notify another parties and so on.

From that, we can list down what kind of technologies we will use on this project.

OK guys. If you ever have question shout out at twitter @hijz alrite. I will continue to write next time.

Cheerios.




Sunday, 4 March 2018

ReactNative II

Hey guys,

It's me again Hijazi from iReka.

I would like to further talking about React Native. I have been studying since last 2 weeks in-depth.

ReactNative (RN) is pretty damn different paradigm than developing with native development with Xcode or Android Studio.

RN is based on ReactJS, a JavaScript library for web development, open sourced by Facebook.

RN was open sourced in 2015, at first only iOS, then support Android later that year.

The development wise is pretty hacky, have many gotchas, inconsistence, some devs I heard fed up with it. It's pretty immature in some case.

Yet on the positive side, it's pretty cool and awesome tech that can support both iOS and Android with same code base. Of course with little modification for each platforms.

So, it's not straight forward, the resource is not many, and can be confusing.

There are ways to make the app proper with some libraries like react-navigation, react-native-router-flux and also react-redux.

Redux concept is quite new for me. Hmm. How to say. It's a state management throughout the app. It has store, actions, reducers and states.

Let me give a little brief about redux. One app has a store which is an overall container of the engine. There are reducers with action's type and payload. Reducers has the functions return the result. There is action for prepare to sending to reducers, it store the action and payloads. Store will 'dispatch' the action into the reducer to generate new 'state'.

Well, Redux is kind of different way of thinking the flow inside app. And using Redux, is make the app one directional. It's actually easy understand when doing. Just read the stuff might does not make sense so much.

OK, hopefully i can do some screencasting on how redux or RN works. But for now I will learn more about RN through out this year.

Till, then. Take Care.
Hijazi