perjantai 5. kesäkuuta 2020

The future tech trend is going to be video

Video platforms will be winners

The top tech trend of 2020-2030 is going to be video. Currently the most popular apps are based on Video. I believe that companies which already have infrastructure and skills in video technology  will succeed in the future.

YouTube will shatter

Currently YouTube is the undisputed king of all online video platforms, but i believe that might change. YouTube only supports a single type of video content (+10 Minute, Family friendly, non controversial, advertiser friendly content) Video can be used for so much more than this. In the future i believe that there will be more specialized services which will siphon users away from YouTube. A great example is Tiktok, it's currently the best place to share short form video content. I believe that similar specialized video services will taking users away from YouTube.

MindGeek might challenge YouTube

MindGeek is a massive tech company with focus on video sharing services. Currently they focus on XXX videos but they certainly have the infrastructure to create a family friendly video platform. According to some rumors they are already building a challenger for YouTube. Consumers would definitely benefit if YouTube got some serious competition. 


Copyright laws might change video

I remember when big data and tech company data collection became a big topic of discussion. EU politicians scrambled and started making laws regulating data collection. This affected Facebook and Google tremendously, because they had to start complying with the new data collection laws. Something similar might happen with the copyright laws. New copyright laws might change every video platform. Here is a good video on the current copyright laws. YouTube has a very shaky copyright policy because the actual copyright laws are outdated. Once we experience an overhaul of copyright laws it might either hurt or help video sharing platforms.

Here is a great video discussing the potential of video apps. I will continue developing new apps based on video sharing and hopefully one of them will become successful.

maanantai 11. toukokuuta 2020

Software architecture principles

Architectural design principles

If you want to get into software architecture there are so many concepts that it will make your head spin. It's all about having certain core philosophies while designing the architecture. After some time breaking things down in my mind, creating analogies and writing things down i understand it. Hopefully this article will help you to understand it as well.

Multitude of stakeholders


Software projects have multiple stakeholders. Business managers, owners, users, operators, etc. Anyone who can potentially profit from a successful project is included in this group. You need to figure out a solution which makes everyone happy. If you are building a housing complex you need to keep the building company and house owners happy. You also need to keep the government happy by following building regulations. Everyone has to come to an agreement. This doesn't always include the developers. If a developer is hired to perform develop a certain part and receives no additional rewards if the software performs well, then he is not considered a stakeholder.

Separation of concerns

The way humans make sense of the world is by breaking it down into understandable chunks. Whenever i see a wall of text i immediately lose the interest to read it. Text needs to be separated into smaller focused chapters which makes it easy to read. In software architecture this can be perceived with micro services. Complexity is reduced by breaking monolithic web services into smaller parts. When i first started drawing i thought pieces like the Sistine chapel is impossible to create. Then i learned about mannequinization, construction lines, figure and composition. You learn a couple of fundamentals and start understanding how a piece like that is possible to create.

Quality driven

In software development this includes all of the relevant -ilities (security, availability, usability, maintainability, etc.) Whenever you are thinking if you should use java or python or how to prevent security issues you are thinking with this principle. When building a house you want all the materials to be high quality. This same principle should be used for software development.

Recurring styles


If you are building a hotel you will want to use similar elements for the entire building. Every room should have similar bathrooms, kitchens and beds. This makes it easy to order furniture and build the rooms because everything is similar. In software development you want to use the same or similar frameworks and languages for a single project. Using recurring styles allows other people to more easily understand the project. Kinda like if you know one programming language you will easily learn another one.

Conceptual integrity

You need a clear vision of what kind of problem you want to solve and how you will do it. You can call this 'the big picture', if you start developing a project without a clear vision you might end up developing unnecessary functionalities.

Cognitive constraints

Melvin Conway once made an observation that became known as Conway's law. When a group of people create system they will only create a design based on their own experiences. Let's say a group of people are designing a web page. They will not add functionality for disabled people unless one of the team members has built or heard about that feature before. This is why team diversity is important when building projects. This doesn't mean you should build a team where every race (asian, black, white, etc.) are represented. You need to look at the experience and knowledge, not the color of their skin.

These are universal principles

If you understand these universal principles it will help you with other aspects as well. Architects, builders and software engineers use the same principles. If you are ever building something you will find these helpful. I believe that using these universal principles you can predict which software development trends will become popular in the future. Here is the wikipedia article i used as a reference.

keskiviikko 6. toukokuuta 2020

My favorite artist of all time


The great Kim Jung Gi

As someone who enjoys drawing and is fascinated by how far some people can push their skills.  Kim Jung GI is one of the best currently living artists. (in my opinion)

Kim Jung Gi - How to Become a Master - YouTube

Early life

His beginnings are very humble, his parents didn't want him to become an artist and begged him to choose a safer career path. His art teacher immediately noticed his immense talents and even sent a letter to Kim's parents urging them to support their child's art career. His parents refused but Kim wanted to prove his parents wrong, this pushed him to studying art even harder.  


I like his style

Kim has a very chaotic art style which i relate to. I have always thought that drawing should be a way for the brain to dump all kinds of visions and information on the paper. He represents that to me. Despite his chaotic style it has very clear and clean lines. It's amazing how he draws with barely any construction lines. Every single line has a specific purpose and even without color you can clearly understand the picture

JungGi Kim LIVE on Twitter: "Haunted kitchen By Kim Jung Gi ... How he practices

I have seen a few interviews where he has explained how he became so good and i think it can be boiled down to one thing : practice. He has been drawing from a young age. If traditional drawing became boring he started painting, once he got bored of that he moved on to digital art. Learning different methods and styles is the key to his abilities.
Wallpaper white, black, art, Kim Jung Gi images for desktop ... We can all draw inspiration from him

No matter if you are a developer, artist or musican we can all enjoy someone who has dedicaded himself to a craft.

tiistai 7. huhtikuuta 2020

Why i don't believe in schools

Education is changing

I am glad that many companies are starting to devalue traditional education and look at actual work projects when hiring. A piece of paper doesn't mean anything for some fields of work. Schools also don't implant the important value mentality into their students. I think attitudes towards traditional school education are changing because of online courses and self learning.

The benefits of education

There absolutely are good sides to schooling. There exist professions where an diploma is necessary. You wouldn't want a self taught surgeon to perform open heart surgery. If you aren't sure what you want to do in your life, a school education is a great choice. It gives you a small glimpse into a large variety of different subjects. You can then choose to specialize in a few of those subjects. Friends and family will also respect you for attending school, i wish the same respect and support was given to people who try to become successful without a higher level education.

The negatives of education

A school will give you a introduction for lots of subjects but it will not make you a specialist. It's better to level up one of your skills to mastery before trying to learn something else. You can actually produce value for yourself or someone else with skill mastery, but a jack of all trades will find it hard to utilize all of their skills when looking for employment. But the biggest weakness of schools is not teaching the value mentality

Value mentality

The biggest life changing moment once i understood the value mentality. The entire philosophy can be summed like this : "Everything should be learned to produce value" This is something that no school is teaching. Learning for the sake of learning is the biggest waste of time. You should always be learning something in order to utilize it. Start thinking what you want to build instead of what you can buildWhen i was school we had mandatory Swedish courses and learned how to use it as a working language. If i want to work in Sweden i will learn the language, learning it now is simply learning something which cannot currently utilize
There are a lot of schools which understand the importance of work experience and setup mandatory internships. Allowing students to produce concrete value to companies is great and we need more of it.

Final thoughts

Saying that all schools are a waste of time is ludicrous. You need to think logically and ponder the good and bad sides. Don't let your family members pressure you into a school, If you think you can learn something without schooling then learn it yourself. School can be used to enhance your abilities but you should never rely on a diploma to bring you success in life.

sunnuntai 15. maaliskuuta 2020

How to deal with rejection

Rejection is natural

Rejection is part of life, it often comes with relationships and jobs. Rejection is something that everyone goes through in their lives. There are healthy and unhealthy ways to deal with rejection. It's important to react to it in a healthy way.

How it feels

You can't decide if people will reject you or not, but you can decide how you deal with rejection. While searching for a developer job i have been rejected countless of times. Each time this happens i always go through the same emotional cycles. At first it feels like a punch to your gut, you start questioning your abilities and self doubt starts creeping in your mind. After that i start to feel overwhelming determination. "You don't decide about my abilities", "I am gonna make you regret not hiring me", these sort of thoughts usually come rushing in. It's important that facing rejection doesn't kill off your inner drive. If you truly want to achieve something, then nobody should be able to switch your inner drive off.

The chase is better than the catch

The first time i heard this phrase was in a ridiculous but awesome scooter song. That phrase is actually a very good philosophy to follow. Chasing after your dreams is much more fulfilling than actually achieving it. You should cherish the struggles which you are going through. Always be chasing something better, atrophy is the bane of human existence.

Job recruiters aren't perfect

It's important to know that recruiters are also just humans as well. Recruiting the right people for a job is a hard thing to accomplish. While coding i have noticed that whenever you feel like you know what your doing, it means that you don't actually know anything. I bet the job recruiters have same kinds of feelings. Just because you don't get hired for a job doesn't always mean that you aren't capable of doing it. 

My tips for dealing with rejection


Always keep a positive attitude. Knowing how to deal with rejection is an important ability to have in your life. Remember that the more times you get rejected, the easier it becomes to deal with it.

tiistai 25. helmikuuta 2020

Video requester application!

New way to monetize content

For a long while youtubers have had problems with monetizing their work. The most common way of generating revenue is through YouTube ad revenue and company sponsorships. I came up with an application which adds another way to generate revenue. Now you can create custom YouTube videos based on audience suggestions.

Requester app

Requester is a new web application that helps youtubers to gain revenue by creating custom videos. It also allows you to request custom YouTube videos from your favorite creators.

For youtubers

Youtubers can sign in with their google account and start accepting custom video requests. You can charge whatever you want for these custom videos. This unlocks another way to gain support from your fans!

For fans

As a fan of a certain youtuber you can request custom videos from him/her. This is a great way of supporting your favorite youtube channels and creators.

Still in development..

Currently the app is still in the development phase. I am working on it by myself which means lot's of hard work. There is currently a build without monetization features, you can check it out here

I will update this blog post once i make improvements to the project. 

maanantai 24. helmikuuta 2020

Why drawing helps with coding

Developing while drawing

I always have a notebook near me while i am developing and i regularly take drawing breaks. Drawing is a great stress release and i believe it helps with coding.   

How the brains work

While i am not a psychologist i do have a rudimentary understanding of how the brain works. Whenever you perform an action, different parts of your brain get activated. For example driving a car or cooking a meal activate different parts of your brain. This process can be visualized with an FMRI scan. Coding and drawing also activate different parts of your brain.

How this ties into coding?

Common sense tells us that the more parts of your brain are active the more efficient it  is. Drawing and coding activate different parts of your brain. Since programming is largely problem solving. The more parts of your brain that are active, the more efficiently you can solve problems. Please note that i am not a psychologist and i don't have any data to back up my claims. I am simply a guy with an interest in the matter.

Weapons analogy

While you are shooting a machine gun, it's eventually gonna overheat. That's why it's important to have a secondary weapon ready. This same war mentality can applied to coding as well.

While you are solving problems the brain is also going to overheat at some point. That's when it's time to do something else. I personally like to writing a blog or drawing. It's important that the secondary activity is still bringing some kind of value. Video games are a great secondary activity as well, but be careful. They will quickly suck off all of your time.



"Dr. Jupemon" recommends

Coding is mostly about solving problems, which is very taxing for the brain. It's important to pair it up with a secondary activity that is relaxing. I recommend everyone to find some kind of secondary hobby along with coding. The activity should be something quick, relaxing and something which doesn't use the same parts of your brain as coding.

tiistai 18. helmikuuta 2020

Why i write fast and messy code

Messy doesn't mean bad

I heard an audio clip of the ruby on rails creator describing what type of coder he looks for when hiring. He was explaining how he only hires developers whose personal projects contain clean code. According to him this reveals that the coder is passionate about coding and might be a good hire. I disagree with this line of thinking,  and here are my thoughts on that subject.

Messy code in personal projects

The way i write personal projects is really fast. The most important thing should be to create a working project as fast as possible.  If one of my projects gains large amount of attraction and users, that is the time to review your code and start improving it. You have to accept the fact that most of your projects will never gain any users or attention. Therefore trying to  improve a project which nobody will use is a waste of your time. Creating a bunch of them will increase your chances of success.

Shotgun vs rifle philosophy

If you are shooting at a target with a shotgun you have a high change of hitting it. If you use a single shot rifle, the rifle shot might be more powerful  but it is much harder to hit with it.

I use the same philosophy with my personal projects. I create a bunch of small messy projects and hope that one of them is successful. If one of them proves to be popular i will start rewriting the code for it. I already made a mistake of dedicating a bunch of time for creating an e-commerce platform. That project went to nowhere, i wont be making the same mistake again.

sunnuntai 16. helmikuuta 2020

What i enjoy about react?

The questions

I have been to a few coding interviews while looking for a react job and interviewers always ask the same two questions. They all want me to explain what i like about the react framework and what technology i would like to learn. I feel like explaining my answer here.

What do you enjoy about react?

This is a question which is given at every react job interview. I have a different way of looking at it. React is simply a tool which allows me to build what i want. The interviewer often wants you to be exited about react and talk about how cool it is. To me it's like being exited about a hammer. Yeah you can build some cool stuff with it, but it's about who uses it.

Would you ask a builder why they would use a hammer instead of a mallet with nails? They both share the same characteristics. Isn't the most important thing that the nails get hammered somehow. I look at react the same way. The reason i started to use react was because i needed to use some kind of framework for a project and it was the first one i tried. I don't feel any kind of emotion towards it, it's simply a tool.

What technology would you like to learn?

I feel like this question should be asked differently. The reason why you should be learning new skills is because your old abilities don't let you build what you want. I don't believe in learning for the sake of learning. I wish the interviewers would ask more questions regarding project ideas and what types of projects have you built. I always write down any ideas and carry a notebook full of them. Most of these ideas will probably never get made but maybe one day one of them develops into a million dollar idea.

The intention behind those questions

I know that the purpose of these questions is to see how familiar the applicant is with react and how he exited he is about programming in general. I wish more interviewers would ask questions about previous projects rather than what tools were used to build them. One thing which i have learned that creating projects isn't just about coding. For example marketing is a massive problem for me, i really hope that writing this blog will draw some interest to my projects as well.





tiistai 11. helmikuuta 2020

Useless coding projects and how to avoid them

A lot of developers got it wrong

Before i discovered google blogger i was actually trying to add a blogging feature to my own website. This was a foolish endevor. Every project you build should add something new to the world. There already exists tons of different blogging applications, calculators, todo apps, etc. Building an app which already exists is a waste of resources. Whenever you have an idea for a project your first objective should be to seek if it already exists. I decided to explore how to create good projects and find out why there are millions of useless coding projects.

Value mentality

When starting a new project your main objective should be to create something which holds value. Find a need that people have and fulfill it. Put yourself into the shoes of someone who would use the service that you will provide. Don't build another calculator application unless you really think that you can add a spectacular and never before seen feature for it.

Assess your current skill set

It's important to understand your current abilities. Build something which you are already familiar with and add a couple of new things. Be reasonable with your time and skills. The only reason you should ever be learning a new skill is because you want to build something with it. I don't subscribe to the theory of learning for the sake of learning

All in all

Do some soul searching in order to understand your own abilities. You should always be building something out of your strengths rather than weaknesses. Create something which holds value and for the love of god, don't build another calculator application, we have enough of them.

keskiviikko 5. helmikuuta 2020

Why this blog might become obselete

Blogs might disappear in the future

With the rise of video technology i believe traditional text media might disappear from the internet. Over the last decade we have seen massive improvements in video playback technology. Now days you can even watch high quality videos on your phone. I believe that every piece of text which can be transformed into video format will be transformed.

Big players play videos

Youtube and Twich are some of the most popular websites and they are based on video sharing. Even Instagram and Facebook are starting to see more video content. TikTok appeared out of nowhere became one of the most popular applications almost overnight. All of the above are either directly or indirectly focused on video content.

Companies begin video marketing

If you are a company it's almost necessary to have your own YouTube channel. Traditionally companies wrote blogs in order to promote their business. This marketing strategy is currently being replaced by video content. In the future text blogs might disappear completely and be replaced by video channels.

Video productions skills will be needed

In the upcoming years we will see a massive need of everything related to video production. Not everyone wants to be a be in front of the camera. But video production is a big process and needs people to shoot and edit videos too. Skills related to video production will be in high demand in the following years.

Conclusion

I recommend everyone to learn the basics of video production. Find out about the most popular video channels and see what kind of content they produce. Familiarize yourself to video production because video content is the future.


Steamer and audience interaction apps

The issue

As streaming is becoming more and more popular i have noticed one type of an app which isn't being build : applications which allow streamers to interact with their audience. The best way to build these would be to create websites and web applications which work on browsers. Although creating android or desktop applications might not be a bad idea either.

What type of applications do i mean?


Twitch is already creating games and video sharing methods which allow audience and streamer interactions. The great thing is that they don't hold a monopoly over it and anyone can build one of these apps. One example i can give is Straw poll. Streamers use it in order to create polls and get quick poll results regarding any question they may have to their audience. I believe there could be more of these kinds of applications.

How do you monetize them?

The most basic method of monetization is through advertisements. Thought this can only be profitable if there are enough users. Another way is to create premium features. A lot of mobile games implement this tactic. They create a game which can be downloaded for free but if you want access to all of the features you need to pay up. This strategy could work for websites too.

My own example

I recently created linkittv which is an example about what i am talking about. It allows streamers to watch videos suggested by their audience. If it proves to be popular among streamers, i plan on creating premium features. These premium features would be locked behind a paywall.

tiistai 4. helmikuuta 2020

Programmers and designs

Software design and war

I think designers and programmers are at war, designers want to implement all kinds of fancy features to the project but they might not know how hard or easy they are to implement. I came up with a little analogy to better explain my opinion on this. 

Software design... Software design never changes

War strategies are an important part of fighting. Successful assaults are often well planned and executed. But the plans can only get you so far, there are some things that weren't or couldn't be accounted while developing a strategy. That's why it's often best to improvise. And the improvisation is best done by the soldiers who are executing the mission. 

The same mindset should be adopted by software developer teams. No matter how much the designing you do, the true nature of the projects is revealed once it's being built. Programmers should always voice their opinions if they think that implementing another design might be easier and faster.

Designs should be a living and changing plan, and those changes are best made by the programmers who are developing the project.

maanantai 3. helmikuuta 2020

Landing and working a tech job

My job hunting philosophy

I recently had a eureka moment while searching for a tech job. I have been thinking about job hunting the wrong way. Let me share how my thinking has shifted.

You should bring value to the company

Many people like to overcomplicate the job hunting process. The only thing you should be thinking is can i bring value to the company. See what kind of projects they have done and ask yourself : could i have helped building these projects. If the answer is yes then you should apply for a job. It's all about bringing value to the company, they pay you set amount of salary but you will generate more money to the company than they pay you.

It's about what you can make

While searching for jobs it's always important to be as clear as possible about your abilities. Let's say a company is looking to recreate their website UI by using react. If you don't know what that sentence means then don't apply for the job. However if you have experience in building an UI with Angular, then definitely apply. It's all about what you can create, not about the tools you use.

Be a partner not an employee

The most important thing is to stop thinking yourself as an employee, and start thinking yourself as an company partner. If you think yourself as an employee, it will cause you to only play the part of an employee, someone who simply execute commands given by your superiors. But by thinking yourself as an partner will cause you to think more critically about your every task. Partners will always think : "how can i generate more value for the company" which should always be the point of your job.

Always be compensated

Let's say you are a developer but you have an idea to start a blog for the company. The marketing people really like that idea but tell you to not work on it during work hours and aren't willing to compensate anything for writing it. DON'T DO IT
You should always be compensated for the value you bring to the table. If the company hires you to work for 8 hours, then you should spend eight hours a day creating and thinking about how to create value for the company.

Company and partner relationship

Company and your relation ship works best while you are both contributing equal amount to the relationship. I took some pointers from Professor Scott Steiner and came up with my own math formula : 50% + 50% = 100% 

Superhero team analogy

While working for a company you should view yourself as Ironman
working for the Avengers. If  you leave your position or get let go do you cease being a superhero? of course not, your abilities and skills still exist and you can go work in another superhero team. 

Just don't join justice league unless you enjoy being part of bad superhero movies! 

The point i am trying to make is that getting fired or leaving a job shouldn't be that big of a deal, you should be always learning skills which are in high demand.


sunnuntai 2. helmikuuta 2020

Website design

Web Design fundamentals

Creating your own web apps and websites has become easier than ever because of the amount of free tutorials there exists online. However, one thing which i haven't seen often is the importance of website design. I have gathered some of the main fundamentals you should be aware of while designing websites.


Color theory

First thing to do is to pick your primary colors for the website. Those two or three colors should be used every time you create a button, site background, image, etc. 
Using too many colors simply doesn't look visually appealing. It's also important to pick colors which go well together.
For example :green and red are often used together to signify errors and successes. You should also be aware of the psychological effects of colors. The most common example of this is how green is used to describe success and red is used for failure and errors. I recommend looking at colors which Bootstrap has put in their buttons, it can serve as a good starting point.

Mobile first

While designing websites it's important to start with the mobile design. You can always scale your components up, but if you start designing your websites with a large desktop screen, you won't be able to scale it down. Starting with the mobile view also allows you to decide the most important elements of your site, because it simply cannot hold a lot of elements due to it's size.

Steal the design

Whenever i am creating a new web application i search online for apps with similar functionalities. This research allows me to 'borrow' ideas that they have come up with and use them in my own projects. While i was building an application that has similar functionalities as GitHub, i simply looked at the layout which GitHub profiles had and recreated it to serve my own purposes.

In conclusion...


Those were some of the most important things which i came up with. I hope they can be useful during your journey in becoming a web developer!