Saturday, December 30, 2017

Unable to connect iPhone's hotspot to Windows 8 PC

I'm using iPhone 6 and iOS 10. My laptop is Macbook Pro 13'' late 2011 but I installed Windows 8 on it. I have successfully connected to the hotspot from my laptop many times already but it just stopped working today. It said the connection is limited, and when I tried to access a web page, i said no internet connection. I then tried to connect to the hotspot from my iPad and it worked. I got connection. I restarted my laptop but it still didn't work. I turned off the Cellular network on my iPhone and then turned it back on, still no luck.

Solution

The solution is renaming my iPhone and restarting the hotspot. I renamed it by go to Settings > General > About > Name.


Wednesday, December 13, 2017

The movie subtitle appeared slower or faster within both Browser and media player programs


There are a bunch of web sites for watching movies free online with subtitles. I often use a browser add-on like Flash Video Downloader to download the movies for watching offline due to slow internet connection, which makes the video keep buffering and pausing like every 5 seconds. Note that the subtitles is not embedded in the video files so I have to download those subtitles from different sites so that I can add them in media player program like VLC. However, the subtitles i downloaded from english-subtitles.org and yifysubtitles.com didn't work correctly. The subtitles either appeared slower or faster than the videos. It's because almost all of the subtitles on the sites were made for different sizes of videos. For example, the videos on those free online sites were 720px HD but the subtitles were made for 480px HD or 1048px HD.

The only one that works for me so far is opensubtitles.org. This site has different subtitles uploaded by different author for different sizes of a video (480px HD, 720px HD, 1048px HD, and so on). Usually, the subtitles for 720px HD made by the author named Blueray is the default one. In other words, it will be downloaded when the user clicks on the Download button. And that one normally works. However, you can download other subtitles uploaded by other authors too and try them out.

Fake the dropbox referrals to get more spaces

If it's hard for you to convince your friends to sign up and install dropbox so that you can gain more spaces as they're your referrals, you can create different mail accounts yourself and send invites to those emails. But this would not work if you're using the same computer to install dropbox and sign in with more than one account. Dropbox identifies your machine based on Mac address or Network Card's address. The addresses are universally unique.

The solution is using virtual machine, in which you can set your own Mac address for the Guest OS. In my case, I was using VirtualBox and followed the steps below.
1. (optional) If you're already in the Guest OS and the dropbox was already installed and linked, go to Settings of Dropbox then Accounts tab and click on "Unlink this computer" button. Shutdown the virtual machine.
2. Select on the virtual machine and go to Settings then change the Mac address under Network section.
3. Start the virtual machine
4. Sign into the invited email account and click on the Invite button in the email message
5. You'd get redirected to the sign up page of Dropbox. Follow the instructions to sign up and then the Dropbox program would automatically get downloaded at the end.
6. Install the Dropbox program, start it, and sign in with the invited email. You're done!

Problem 1

I was going to create 10 Gmail accounts as my referrals but a phone number could be used to verify only three accounts when signing up and I had only one phone.

The simple solution is using different mail services such as outllook.com.

Problem 2

In step 5 I noticed that I got the error message "Please enter the CAPTCHA resopnse" when I clicked on the submit button when it's the third time I've signed up on dropbox. I think it's a Dropbox's bug. It tried to prevent robotic spammers but it didn't provide a place to enter the captcha.

I found a workaround to bypass the captcha. I used VPN client to change my IP address so Dropbox couldn't track how many times I signed up anymore.



Sunday, December 10, 2017

What is Agile Software Development?

I was always confused when the words Agile, Software Development Life Cycle (SDLC), and Software Engineering came into my mind until I read the book "The Complete Software Developer's Career Guide". The book does not dive deep into details. It just gives the overall ideas of how those words mean and it's what i've been looking for.

1. Introduction

Software engineering is about how you design and develop your software effectively. In traditional approaches, there are 6 main phases in developing software such as Analysis, Design, Implementation, Testing, Deployment, and Maintenance. These phases define the life cycle of software development.

Software development methodology, as its sounds, is a method/way/principle/workflow to develop software. There were a bunch of traditional methodologies of software development and the most well-known one was Waterfall.

The Watterfall approach requires one phase of SDLC must be completed before you could go to next one. For instance in Analysis phase, you need to gather all the requirements of the whole system and finalize them before you could go on to the Design phase (design UI and system using UML). The bad thing is for example if the requirement need to be changed for some reasons while you're already halfway in the Implementation phase, you can either go back to each phase and do it again or end up delivering the system the customer doesn't want. Just a small change in the requirement could make a big different in design and implementation phases as most parts of the system has already be done. This is why Agile was invented.

Agile software development involves developing software in iterations and adapting to requirement change. All the requirements do not need to be finalized ahead because only one or two of them are chosen to be implemented per iteration. Each iteration must go through the Analysis, Design, Implementation, Testing, and Deployment phases and may last 1 or 2 weeks. As the developers are required to focus on the prioritized features, the impact of requirement change on the work they've done is less or none. Some people are stick to one Agile methodology while some others combine one or two methodologies together even with their own methods.

2. Scrum 

It is one of the Agile methodologies that defines the roles of software development teams, the workflow for developing software, and what meeting should be set up in each iteration of development, also known as a sprint. Ken Schwaber and Jeff Sutherland started to write about Scrum at the same time in the early 1990. Then in 1995, they wrote a joint paper merging their own approaches together to define Scrum methodology.

Roles

There are two main roles: product owner and scrum master. Product owner communicates between customer and stakeholders/teams and knows everything about the business and prioritize the tasks. I think of this role as project manager. Scrum master is just like a team lead/manager responsible for teaching the team members and solving their problems.

Workflow

All features are called product backlogs. Each product backlog may have several items, in which some of all of them are pulled to work on in a sprint. At the beginning of each sprint, everyone is gathered in a meeting to set estimation for the tasks to be done. There is a stand-up meeting everyday to follow up the progress. Everyone must report what they did yesterday, what they going to do today, and the problem they're having.

Issues

It might put much pressure on each team as they have to report the progress everyday. Everyone must have commitment that they have to complete the task on time even if they have to stay late but it's hard in real life.

3. Extreme Programming (XP)

XP was created by Kent Beck around 1996. Like other Agile methodologies, XP requires developing the system in iterations and adapting to requirement changes. According to the book "Extreme Programming Explained", any ways you do to make the development go smoothly, make the system good, and satisfy the customer to an extreme level are XP. Good communication, helping each other, and being proactive can be called XP. Taking the "best practices" such as unit testing, test driven development, and object-oriented programming is also Extreme Programming. Today, there are more "best practices" such as pair programming, which two programmers sit together to solve one problem. Pair programming help them focus on current important task, and find the best solution and complete it fast.


Friday, December 1, 2017

My favorite VPN clients

If we're connected to VPN server, all requests to any web sites would go to the VPN server (through ISP of course). ISP can't know what web site we're requesting as the message is encrypted. It can only know we're sending request to VPN server. Then, VPN server requests the targeted web site and returns its content back to our PC.

Normally, I use VPN to hide my location. There are a bunch of FREE VPN servers and clients (the programs to connect to the VPN server). Below is the list of VPN clients I've used.

For Windows

- TunnleBear: the speed is fairly good but the data usage is limited per month.
- VPN Gate: the speed is a bit slow but it provides unlimited data usage.