Generates .gitignore file
Pretty cool service. Generates `.gitignore` file for you based on the IDE, OS, programming language.
🩵 avery cochrane 🩵
Monterey Bay Aquarium
KIROKAZE
No title available

Origami Around

izzy's playlists!
Noah Kahan

tannertan36
Cookie Run:Kingdom Official!
Fieri Frames

Jimmy Eat World
No title available

No title available
Interview Vampire Daily

❣ Chile in a Photography ❣
macklin celebrini has autism
Mike Driver
No title available
2025 on Tumblr: Trends That Defined the Year
TMBGareOK. The Official They Might Be Giants tumblr
seen from Brazil
seen from Argentina

seen from Italy

seen from United Kingdom

seen from Venezuela

seen from United Kingdom
seen from Colombia

seen from Türkiye

seen from United Kingdom

seen from Vietnam
seen from Netherlands
seen from Italy
seen from Serbia

seen from Canada

seen from United Kingdom
seen from Ecuador

seen from Malaysia

seen from Italy

seen from United States

seen from United Kingdom
@ronaldsuwandi-blog
Generates .gitignore file
Pretty cool service. Generates `.gitignore` file for you based on the IDE, OS, programming language.
My Personal Fish Shell Configuration
UPDATE: I’ve added additional prompt to display if the git status is ahead or behind the remote branch
I’ve been using Fish shell lately and absolutely love it. I particularly like the autocomplete feature and their glorious VGA colour.
My personal fish shell configuration (best viewed under dark terminal background) is available at https://gist.github.com/ronaldsuwandi/10013651
Features:
Uses cyan colour for directory (instead of the standard dark blue colour)
ls by default uses ls -lhFG options
subl to launch Sublime Text in new window
grep always ignores binary files and displays line number with colour
Prompt supports virtualfish and git branch (yellow means no changes on the branch, while red means there are untracked/modified files)
git branch name
git remote status (shows up arrow if local branch is ahead and down arrow if local branch is behind). This status is only shown when all files are commited
PojoViz - visualize your code
Just found out this beauty, it's plain awesome! It's really nice to be able to see how the objects connect to each other; I had so much fun looking at how Angular and React objects connections :)
Node.js + Backbone = wearther
Originally posted on wearther blog
I would like to share how wearther code is achitected. Hopefully this post will be useful for your own projects.
Wearther is built on top of Backbone for the front-end and Node.js as its backend. The backend stuff is pretty simple, just a small webserver that handles different routes, requests external API calls and the optimizer to calculate clothing combinations. I want to focus on the front-end side of things instead.
First off, I decided to separate each component to a separate module and store it in their own separate directories. So we left with the following directory structure:
modules/ |-combinations/ | |-collections/ | | |-combinations.js | |-models/ | | |-combination.js | |-views/ | | |-combination.js | | |-combinations.js | |-Combinations.js |-listings/ | |-... | |-Listings.js |-location/ | |-... | |-Location.js |-router/ | |-Router.js |-settings/ | |-Settings.js |-temperature/ | |-... | |-Temperature.js Util.js WeartherApp.js
WeartherApp.js is the main file where it listens to events and deal with them accordingly. It's also the point of entry for the entire app.
Originally each module can communicate to each other directly but I soon realized that it's not going to be pretty once I start to add more modules in the future. Eventually it will be a very tightly coupled app. So I decided to look for alternative pattern and soon discovered Mediator[1][2] pattern.
A quick note: mediator pattern allows the app to be loosely coupled by not a letting modules to communicate to each other directly. This is achieved by passing the mediator object around. Something like this:
var mediator = { subscribe: function(channel, fn) { // store the function into the channel }, publish: function(channel) { // notify the channel } }; function Module1(mediator) { function doSomething() { // do stuff // let mediator knows we're finished mediator.publish('module1:done'); } } function Module2(mediator) { mediator.subscribe('module1:done', function() { // module 1 is done, do something here }); }
I like mediator pattern approach but I'm still not entirely satisfied. I don't like the idea of passing the mediator object around (in this case WeartherApp) to each module. I don't like the extra parameter in my function constructors so I came up with mediator-like convention: a slightly modified Event Aggregator pattern (note that I mentioned convention, because it is very easy to mess things up if I'm not following my own convention).
The idea is very simple. Each module can broadcast and listen to message, but they are not allowed to directly communicate with other module. Every communication is handled by the main object (WeartherApp). To achieve this, all modules inherited Backbone.Event class so it can call trigger method.
WeartherApp then load all the modules and listens to the broadcast messages and react accordingly
*Location.js* function getLocation() { // obtain location var location = readGeolocation(); this.trigger('location:locationUpdated', location); } *Temperature.js* function getTemperature(location) { // do ajax call to server var temp = $.ajax(...) this.trigger('temperature:temperature', temp); } *Combination.js* function calculateCombinations(temp) { var combinations = $.ajax(...) this.trigger('combination:combination', combinations); } *WeartherApp.js* locations.on('location:locationUpdated', function(newlocation) { temperature.getTemperature(newlocation); }); temperature.on('temperature:temperature', function(newtemp) { combinations.calculateCombinations(newtemp); }); // start the app location.getLocation();
What I like about this convention is that I don't have to pass around the main object (mediator), instead each module simply broadcast its own message without any dependency to the main object. The obvious downside is that it is possible for each module to talk with each other. That's why by using the convention, the module should not listen to any message at all. It can only broadast and it's up to the main object to handle them.
Another reason why I like this is that the inner module implementation can be as convoluted as you wish without affecting other module. For example in Combination module, the implementation (models, collections, views) can interact with each other (model can notify collection and vice-versa) while the main module container is the one wrapping them all up and broadcast message to the main object whenever required.
I hope you find this post useful. Let me know what you think :)
Think big, but build small. Create something you're proud of, but don't let it swallow you financially. You don't need to slather money over good idea. A good idea will grow by itself
Richard Branson - Like A Virgin
Why mobile web application sucks
Originally posted on wearther blog
Originally I started wearther as a mobile web application - webapp out of the curiousity of the web technology. I was just started learning JavaScript and was so inspired by Forecast.io (try visiting Forecast.io using an iPhone). To average users, they wouldn't even notice that Forecast.io is not a native app!
As soon as I started working on wearther mobile web application, I noticed some serious problems and limitations (note that problems 1-4 are iOS specific problems):
Bookmarklet freezes! This one is a huge issue for me, when opening bookmarklet on iOS, there are times where it just froze and simply won't respond to anything. Turning screen off doesn't work, the same goes with pressing home button (although Siri is still active) [1] [2] [3]. I started noticing this on iOS 6 and was hoping that this will be fixed on iOS 7. Unfortunately that's not the case. In fact, iOS 7 introduces severe bookmarklet problems [4] [5]!
No multitasking. This irks me and Enrico the most. Often when checking the weather we got distracted by new email or tweets, so we simply switch app. Upon switching back to wearther, we have to start all over again from the beginning (obtaining location/temperature/combinations).
Updating the webapp is a pain. Sometimes you have to delete the old shortcut and re-add it again (if you made a significant change on the <head> tag)
Location permission expires. I haven't fully confirm this but after some time wearther will lose permission to use geolocation. The only solution was to recreate the bookmarklet. This is a big no-no.
Compatibility issues. It's getting better everyday but one big issue I faced was running wearther on Samsung Galaxy S3 was border-radius style was not respected. Best part is, it's Samsung Galaxy S3-specific bug.
I admit I was very slow to decide to move on to native iOS, but it's better late than never. Switching to native iOS opens up a huge possibilities for the upcoming features. I'm really excited and looking forward to it!
Writing journal
I have to admit I have been lazy keeping up with my journal. However, I decided that I will continue to write journal once again after watching Clannad. Embarrassing to admit but that anime had such a huge emotional impact. Spoiler alert - When Okazaki lost Nagisa, one thing that stuck in my head was that he keeps remembering their memories together; it’s such a heart wrenching scene.
Suddenly another thought came into my head; this time from Game of Thrones. King Robert once said to Ned Stark that he loves Ned’s deceased sister. But the tragedy is that it’s been so long that he can’t even remember what does she look like.
At that moment I realised that I must continue to write journal, I want to write all the memories that I have with Stephanie while I still have the chance. There is only so much memories your brain can handle before it starts to give way. Before that happens, at least I want all my memories written down in a journal where I can read it again in the future
Also another reason is based on Matthew Michalewicz’ book - Life in Half a Second (get it on Amazon). One of the important tip is to keep a journal; keep track how does my daily/weekly routine helps me to reach my goals.
Life in Half a Second
I have recently read Life in Half a Second written by Matthew Michalewicz. All I can say is that this book is a must to read.
Simply saying that the book is inspiring, challenging and motivational doesn’t do justice. Have a read at the first chapter (PDF) and you will understand what I mean :)
You can purchase the book from Amazon
PS - I attended the book launch in Sydney last month and it was simply amazing. Great performance by Vinh Giang and excellent introduction to the book by Matthew Michalewicz. If you ever need an inspiring speaker/entertainer/magician, you should definitely check them out.
Disable flickering on iOS webpage
OMG this is such a lifesaver! This will be implemented in the next version of wearther :)
omg I seriously love the new naming convention ಠ‿ಠ
wearther
I've been so busy lately after I launched wearther and its blog. For those of you that didn't know, wearther is a weather forecasting webapp that suggest you what clothing combinations to wear. It's excellent for autumn/winter/spring.
On unrelated news, I'm planning to migrate my current tumblr blog to Hexo-based blog sometime next week..
Kanye West wants to help people dress well because it's illegal to be naked. Yeezus spoke: "People could say, 'What do you mean you want to help the world and you're so concerned about fashion?' It's illegal to be naked. It's not illegal to not listen to music."
http://www.gq.com/style/blogs/the-gq-eye/2013/09/kanye-west-zane-low-bbc-radio-1-interview.html?mbid=social_twitter_gqfashion
From hackday to Minority Report style browsing in two weeks
Really love his looks - except the canadian tuxedo one
wearther - the weather app that styles you rain or shine
After months of hard work, I am ready to invite you guys to see my new app: wearther. It will be ready very soon! A weather forecast app that can help you choose the most comfortable outfit given the temperature.
Designed by my beautiful wife Stephanie Lee and with the help from Enrico Susatyo
http://wearther.cc
Stop testing IE 6, it’s a trap! Been crap since way back, everybody knows that Standards make dev such a snap And don’t get me started on space vs. tab.
genius
This is a Ruby program that generates Scala program that generates Scheme program that generates ...(through 50 languages)...
wut...