Category Archives: Software development

How to root T-mobile Samsung Galaxy S3 SGH-T999

Did my first root of Android phone. I had two Android phones before, but I never rooted it. This time I had a need for root to add the Chinese language to a Samsung Galaxy S3. The specific model is T-mobile SGH-T999 (shown in the Download or Recovery mode, but the model number on the settings says AT&T model number, which caused some issue for me later down the road).

The main reason for doing this is to add Chinese language support. It looks like by reading the article we can only get it work by rooting. I also looked at another article on the language support that suggested both MoreLocale2 and Language Enabler. Tried MoreLocale2 first but it seems needing root. So I started looked at the root tutorial. Because of the “wrong” model number, initially I thought this is an at&t device (model number at&t samsung galaxy s3 i9300, and here is an tutorial for that). Note the two tutorials are similar (t-mobile root tutorial here), the main difference is the at&t one is more verbose, and it has a link to the mod5 file for the at&t model. The odin program did not work for me initially because I was using the latter mod5 file (mismatch between hardware and mod5).

After that mistake the device was stuck in the Download mode (link to get into the Download mode), and could not reboot. I googled I have to download a Samsung software to get it restored. There were other hiccup too, one being the device cannot connect to my Windows 7 laptop (a bit old HP elite book), even after I install the driver. Had to reboot to make sure they connect. Back to topic, I was able to root after I switched to the mod5 file for t-mobile device. And it worked like a charm. After that I installed the rootCheck and SuperSu app from the Play store.

After the root, reboot I installed the Language Enabler app by Wanam from Google Play store (again refer to the language article above).

Final impression: the Samsung s3 is a relatively old device by today’s standard, but it works as a basic smartphone and adding the Chinese language to it, in my specific case, could potentially save an iPhone purchase (SE starts at about $400 in the states). It just takes some work to get it work, from enabling the developer mode/USB debugging on the device, to the odin software root.

Happy rooting :-)

Production, production, production

I first learned the “production environment” in 2010, when I worked as contractor for a major railway company. Before that I was mostly in CAD software development and consulting environment the word “production” did not come often. To be precise at Siemens PLM/UGS as developers, we did have access to various production releases and did validation for bug and bug fixes from time to time. Our code goes to release per year or per quarter. But production is not as significant as the maintenance releases, so this is the world of shrink wrap (engineering) software world.

Came to the world of business applications, or web. The first thing I learned is it’s not a good idea for newbies to touch production data. Or for that matter, not good idea for devs to touch that either. Very few people has production access, besides admins (database, web), the few people have access are usually product owner, business analysts, or product support people. And fast forward 5, 6 years, I became one of the latter. This is a privilege. Something I learned over past year:

1) Start from baby steps: e. g., if we want to update 1000 records: start from one or two records, do the update, validate and if everything looks good, do the mass update. This goes th way of divide/conquer too: so for example, if I need to delete 3 or 4 million records in one script (one run), I know it will be a long operation, and I don’t want the operation hang or fail in the middle. So what do I do? I divide the deleting operation into a few, each operation deletes half a million, much more manageable, and I will get the it complete much faster or get feedback much faster.

Continue reading

Contractor or employee ?

A common question for software developer is to be an employee (full time, perm) or be an contractor (W-2, or 1099). Strictly speaking the 1099 is more like a small business, and I have not done it personally. I heard some experienced people did the 1099; I will share if I have that exp. down the road.

I spent most of my career so far being an employee (8 years for Siemens PLM/UGS was the longest); I also spent some time being an contractor (total 3 places, about 28 months). Each option has pros and cons. A few things I learned from my own exp.

1) People have all kinds of expectations for contractors, usually the higher pay, the higher the expectation. For employee, they are a bit more patient.

2) Contract to hire. I found this is usually promised or at least suggested at the beginning, as personally I still prefer to be employee long time. But in two cases, I found they were not the case. All types things happen at client, but in one case looking back I felt the client may never had intention to convert. So this is something to keep in mind as for some people the longevity/conversion is important factor.

Continue reading

Moved domain registrar from bluehost to godaddy

Followed this instruction move away from bluehost; and move domain into godaddy. Most instructions are accurate, except one needs to ping pong couple times, started from bluehost first, then at godaddy website, after that I received email from godaddy asking about the transfer, go ahead and use the information in the email to start the official transfer, at last I go to bluehost website and approved the transfer. The interesting part is the entry of name server on my web host (digitalocean) gets updated automatically once I approved the transfer by clicking the link on bluehost. This really surprised me as I was expecting to make changes manually on my own :-)

You may ask why I bother to transfer? I have actually moved my web hosting from bluehost to digitalocean (shared host to dedicated hosting) a while ago. This is the last step before moving completely away from the bluehost. No ill feeling towards bluehost (although couple years ago it did give me some headache). It’s just the cost between the two are comparable and I like to have more say on the web hosting.

Last but not least, if you have Amex card, check if you have the godaddy $20 off $50 offer. I found it from one of my Amex card, and I used it for domain transfer ($9.99 x 5 years plus a bit tax/fees). So the total will be about $30 after Amex offer. :-)

2015 Year In Review

It’s new year again, and obligatory new year resolution time. I think I’m already past that practice: will try to put down iPhone and Macbook more when I’m at home though (I was referring to this comment on 2014 review: Leave the iDevices/mac if I can). I’ve eaten my own words on this one. My younger daughter is at a fun age (17.5 months), being a toddler learning to talk, I’ll play with her more, and of course continue my weekend chauffeur job for my older daughter (skating, dancing/pre-ballet etc).

Job Change
I changed my job again this year. I was not expecting it at the beginning of the year or did any planning. But it worked out so far. Again I hope I can stay at my current place longer :-)

Personal finance
I stopped contributing to the Exxon mobile DRIP program; started put same money ($100 per month) into IBM DRIP program instead, still using ComputerShares. Was able to save some money in the emergency fund account. But still spent quite some on the following items.

Visited Disneyland;

Got a piano and ready to start piano lesson for Serenity in 2016;

Replaced AC and furnace, the new one (American Standard, same as the Trane brand) works like a charm, also bought two mattresses (one from Mattress Firm local store, another one from US-mattress online store). Long term it’s going to save some money on electricity as this one is more energy efficient.

Workout, exercise, swim
I have been doing swimming for a few years at JCC (both Chesterfield and Creve Coeur locations), as I live near the Creve Coeur location, and I worked near the Chesterfield location last few years. That has been changed as the new baby (July 2014), and new job requirement (June 2015). I have been using UP Band, Fitbit app on iPhone 5s, and in June this year I got Fitbit Charge the same time I changed job. Trying to get 10,000 steps per day per the recommendation. Still try to get some swimming as time permits.

I started walking in the trails at Laumeiers Sculpture park since last Winter: trying to breath some fresh air during lunch break at work. The new place does not have a nature trail like the Sculpture park, but it does have a one mile paved trail. It’s good enough for me. I usually walk at lunch break, when weather permits. Otherwise I would walk the stairs, as not good as outside, but it does the job. One thing I learned over the years is we need to take care of our own health while working, because at the end of the day, we need that to provide for our family, also to enjoy things (this hits home especially whenever I get sick). There is an excellent “Under the Radar” podcast on this ergonomics topic. I recall at my old work place, my coworker had surgery on the capal-tunnel (a common injury from using too much keyboard or mouse). Back pain is also common among office workers (sitting too long). The walk/stretch from time to time is a good way to prevent/reduce that.


Continue reading

Got some tech toys for my daughter 

I thought this problem for a while. Sometimes I heard people complained companies like Lego discriminate: their toys are more for boys than girls, so Lego came up this Lego friends series which is geared more toward girl, as they ranges from bakeries, beach house, to rain forest rescue, and they have a lot girl figures. 

I think I fell into this trap too. I think some of the tech toys can be helpful and stimulate my daughter’s interest on STEM, but I did not follow through. She is 5 and will be 6 in a few months. So recently I did something different, I bought a quad copter (while she cannot play it, it could stimulate her interest), and the snap circuits 100. I can still sense her natural tendency is still social science, as I saw that’s her favorite in brain pop Jr. But I will give it some time and hopefully she will fall in love with IXL too :-)

Note: brain pop jr. And IXL are 2 kids education websites. 

Another related topic is the “hour of code” initiative, I feel the awareness of coding or programming is reach all time high in school these days. Still remember my first computer program in basic language, when I was in middle school (about 13 or 14). Of course now we have so much wonderful material and resources such as Kahn academy, raspberry pi etc. It’s much more fun and hopefully can be integrated into science and math curriculum as well. Personally I think that’s more fun than standardized tests. Don’t get me wrong, I think fundamental training is still important, but creative work or education are also important. This takes time and effort, I am hoping more stakeholders (educators and parents) can buy into this in the future :-)

Refer to Scott Hanselman’s blog post “The 2015 Christmas List of Best STEM Toys for your little nerds and nerdettes” here. Btw, I also got the Snap Circuit SC-300 for my nieces (10 and 8 years old).

Docker and Vault: a preliminary tutorial

We most likely heard about Docker, the ultimate container. Recently I followed the GSG on the official website to get a feel for it. Vault is a open source project supported by Hashi Corp (famous for Vagrant, Consul, and other open source projects). I came across this docker vault image created by kintoandar (Joel Bastos) via his blog post Vault: PKI Made Easy. Since I was new to both technologies (I did followed the docker GSG on my Mac), Joel’s blog is a bit advanced for me, here are some of the steps I did to make the basic vault commands work.

I will update this blog post as I follow along the offical Vault GSG and Joel’s blog post.

Start the docker terminal, click the on Mac, it should lanuch the terminal.

docker pull kintoandar/hashicorp-vault

docker run -d -p 8300:8300 kintoandar/hashicorp-vault

docker help

Minjies-MacBook-Pro:sandbox minjiexu$ docker ps
c8b183b9e0ed kintoandar/hashicorp-vault "/bin/vault server -c" About an hour ago Up About an hour>8300/tcp admiring_jang

Minjies-MacBook-Pro:sandbox minjiexu$ docker logs c8b183b9e0ed (this is the container_id above)

Minjies-MacBook-Pro:sandbox minjiexu$ docker inspect c8b183b9e0ed

Minjies-MacBook-Pro:sandbox minjiexu$ docker exec c8b183b9e0ed vault status -address (one line)

Sealed: false
Key Shares: 1
Key Threshold: 1
Unseal Progress: 0

High-Availability Enabled: false

Resources for aspiring software developers in St. Louis

We know St. Louis is not a hot (or cool) place as Seattle/Silicon Valley in terms of job opportunities for software engineers. But St. Louis area have plenty of opportunities from small to large organizations, with a diverse industries. There are also many resources for aspiring software developers who like to join the industry.

The No. 1 resource I recommend is LaunchCode. It was relatively new, but I personally knew 3 people got internship position through them, and 2 of them received full time offers, in last few years. They seemed really got the non-traditional students/newbies connected with the industry.

The No. 2 resource I like to mention is all these “user groups”, e.g., the old ones such as St. Louis Java User Group, St. Louis .Net User Group, St. Louis Unix User Group. They are mostly free and open to everyone, here is a list of monthly calendar compiled by the good folks at sluug. There are also some groups concentrate on newer technologies, such as iOS, Android, Angular JS Group, and functional and dynamic languages. Relate to the last one, there is also a conference on coding StrangeLoop which is considered good in the midwest (if not the US). I have been to most of the user group meetings and StrangeLoop conference (a while ago, when I’ve not got busy with 2 young kids), and I think they are good in terms of two aspects: 1) Learn new trends on the technology; 2) Get to know some of the people (they are not all nerds :-) Last but not least for user groups sometimes they have free food or door prizes: they are usually sponsored by the hosting companies or the recruiters who are looking for developers.

This is also my last bullet point. The recruiters. I know in this day of the age, we have a somewhat love/hate relationship with recruiters because they spam us on the phone, and on linkedIn. But looking at another way, for many openings esp. contractor positions are coming through recruiters. And also keep in mind not all recruiters are the same, there are some (if not a few) who are really good at finding positions and are also pleasant to work with. Not all are like car salesperson (for that matter, I think the perception on car salesperson is also rated unfairly). So my advice for aspiring developers is to establish something on LinkedIn, and start looking for a few good recruiters. I personally have worked with some very good recruiters, and my friend who found internship via LaunchCode worked with a recruiter at one time too (both out of necessity, sometimes companies can only hire contractor).

Will update this post as time goes.

Work around for Excel lose leading and trailing zeros when importing csv data

This is from reddit. “…open a blank workbook in excel, then from the Data tab, under the “Get External Data” setting, choose “from text” and point it to your file. This will open the text import wizard. On the first step, choose “delimeted” and then “Next.” On the second, select the checkbox next to “Comma” then click “Next.” Now in the third step, the field should be shown, along with Excel’s best guess as to the data type. You’ll see that your numbered fields are shown as “General.” Click the column containing the numbers and change that field to “text.” Do this for all applicable fields that you want to save leading zeros for, then click “Finish.” (Excel truncates leading zeros if it thinks a field is a number. Leaving it as text will preserve the zeros.)…

My workaround is to stick an apostrophe (tick mark) for the numbers I want to keep the zeros. In other words that essentially make it a text by adding the tick mark.

Sustainable software development II : rewrite and star performer

Developers usually like new project, sometimes called green field project, in the sense developers have more freedom to create (think of a white paper). In the same token, from time to time people will start a “full rewrite” project as the old project (code base) is “so messed up” and beyond repair. Is that real? A very high profile “rewrite” failure is the Netscape rewrite (see Joel Spolsky’s post here). And recently yours truly was involved in such “rewrite effort” as well. The result is also similar. I think not just developers, some managers also like the “rewrite” as well, due to various reasons. Some are valid, and some are not. Software (if it’s true software) usually lasts longer than people thought. In 2002, I visited my former workplace, a manufacturing place in Shanghai, and surprised to found they are still running my Foxbase/Foxpro based report generator, the the OS is Windows 3.1. At the time I worked on this (1994/1995), it saved 2 accounts, a few days of work (type calculators), each month. I bet they still used it for sometime after 2002, but I really doubt that will last till today, and the printer (Epison pin based) may not find punched hole printing papers :-)

Star Performer
I thought this problem for a while. I happened to listen to one podcast from “this agile life“, and read this article The surprising danger of being good at your job from yahoo/business insider, both helped me think more about this problem.

I think in software development world, it’s a very common phenomena, like @codinghorror said in this post “two types of progammers“, basically he is saying there 20% of developers are passionate about software development, 80% of them are there to get a pay check. But the star’s power and magic needs to be balanced or controlled, so that the teammates can also thrive and together the team can deliver something truly good.

Another related phenomena, is Lebron James in NBA. A few months ago we witnessed his heroics again. But Cavs did not win eventually. One reason I think is they are one man team. While their opponent Warriors are a real team.

Side note
Last week I received an email from my former boss asking me about a “magic number” I put in the code. I had to admit I messed up :-)