Here is a list of common linux commands that I always forget to use.
Add A New User
Create a regular user with a home dir
sudo adduser
make that user a sudo-er
sudo usermod -a -G sudo <username>
Here is a list of common linux commands that I always forget to use.
Add A New User
Create a regular user with a home dir
sudo adduser
make that user a sudo-er
sudo usermod -a -G sudo <username>
So you just bought a domain name and now you need to setup email accounts for everyone in your Startup. Well, I guess you could go out and find email hosting. But who wants to spend about $2-$3 / month / mailbox? After all, this is Lean Startup right? Screw that! You call yourself a tech guy right? You are 1337! So setup your own email server!
This guide will walk though the steps to configuring a Mailserver hosted on Amazon EC2 using Ubutnu 12.04. By the end you will have working:
Continue reading ‘Configure a Mailserver for your Tech Startup’ »
I use VirtualBox to run a Ubuntu. I have noticed that Google Chrome acts really buggy under Ubuntu. Recently I descovered a fix for it. Launch Chrome like this:
google-chrome --disable-accelerated-compositing
TinyStep is an alternative to Objective C’s Foundation library. TinyStep is not just another open-source implementation of the Foundation library like GNUStep-base or Cocotron (both excellent project by the way). Rather, TinyStep seeks to implement only the primitive and essental programing constructs such as lists, strings, hashtables, etc. Also, TinyStep diverges from the standard Foundation classes in some significant ways. For example, instead of providing a NSArray class, TinyStep provides a TSList protocol with TSLinkedList and TSArrayList implementations. In this way, TinyStep follows more closely with Java’s core libraries.
TinyStep is built from the ground up with portability in mind. Initially, TinyStep will target iOS, Android, i386, and x64, but will hopefully add more in the future.
Check out the code at: The TinyStep GitHub project site
Ubuntu 12.04 has packages for Trac, so installation is easy. But you will also need to configure your new Trac enviroment for a new project. Heres a little tutorial on how to setup Trac using Apache.
Continue reading ‘Install Trac on Ubuntu 12.04’ »
Sometimes you just need to create a quick little webservice. I perfer writing most of my projects in Java because of its cross-platform, ease of debugging, and robustness. So here is some tips on starting a new java webservice using Maven and Jetty.
Continue reading ‘Maven + Jetty = Quick WebService’ »
I have been working on building objc support for Android.
Continue reading ‘Compile libobjc2 for Android’ »
Let’s face it, Objective C syntax is kinda wack. But there are some features of objective c that are cool. I like that objc is a super-set C, meaning that you are free to mix C and objc code together. This makes it easy to take advantage of pre-existing libraries written in C and C++. I also like the Foundation library’s reference counting memory management convention. You know – retain/release/autorelease. The simple memory management rules take the confusion out of who owns the object and when it should be freed.
The addition of Automatic Reference Counting (ARC) compiler feature makes it easier to write leak-free code. ARC comes out of the box in XCode 4.5 which is great if you are an iOS/Mac developer. But did you know that ARC is actually implemented in CLang, which is open-source and available on lots of other platforms other than Apple products. This post explains how to get started using objc + ARC on Ubuntu linux.
Continue reading ‘Ubuntu 12.04 + Objective C + Automatic Reference Counting’ »
Crashes happen. So its important to be able to find the root of the problem and fix it. Often times, all we have to go on are iphone crash logs with stack traces. Here is a nice way to convert those ambiguous stacktraces into meaningful function names and line numbers.
Continue reading ‘Symbolicating iOS Crash Logs’ »
Recently, I have been working with the Android Facebook SDK and had a problem calling authorize from a Fragment. I discovered that my Fragment was not getting the resulting onActivityResult callback. After looking through the Facebook SDK code, I discovered that startActivityResult was being called on the instance of the Activity passed into the authorize call. As a result, the onActivityResult was getting called back on the Activity, not my Fragment.
I forked the official Android Facebook sdk hosted at Github and added Fragment support myself. The change is pretty simple, basically added a new authorize function that passes a Fragment. Now my Fragment gets the onActivityResult callback. Hurray!