| Subcribe via RSS

Tools I’m using for work (UX guy)

October 12th, 2013 | No Comments | Posted in Software

I’m glad to announce I took a steady job nowadays. So, I’m working in a ‘not alone’ environment and doing less freelance work. Not alone, means I have to work together with many other creatives to achieve a common goal. My official title is UX Designer. This means I participate in software development from idea level to ready made product.

But, taking a steady job also means I got a  work computer and had to set it up from scratch. While doing this, I started thinking that each creative professional uses different software. Sometimes even same software differently. Maybe it would be useful if I’d share my humble list here.

I tried to make the list below something that would follow my work pipeline from idea level to completion.

https://www.draw.io/
Free, but part of google apps ecosystem, which is not free, so they’ll probably milk corporations somehow. I’ve used it for free until now anyhow.

A nice online tool for mind mapping and prototyping flows. It’s super useful before you move into real production or wireframes. You can use snapped and linked arrow thingies, plus you get bunch of styles to be more expressive in your mind maps. This web app has a bunch of template sets, but they seem to be rather thoughtful keeping all the design and eyecandy to a bare minimum. So basically you can use it as a pre wireframes tool.

It does wireframes as well, but I haven’t used it for that. I believe wireframes should be a little prettier than draw.io has to offer, but that’s way subjective.
It syncs and saves the diagrams to your google docs (Google Drive nowadays).

screenshot of draw.io

draw.io is a mindmapping/flowchart tool

drive.google.com
Free (and visible to the Sauron’s eye)
I share documents there and I can share the diagrams I made in draw.io. Also good for text documents, spreadsheets and more bureaucracy stuff.

Google Drive

Google Drive

iWork
Paid
The company I’m working for does word docs sometimes. I know Pages is not MS Word and saves weird formats and is a bit of a trouble to use, but at least it looks and behaves like I understand something should. File type stuff excluded. I’m not sure I can default to let it save to MS Office, so every save I’ll have two files and difficult to tell which one I should send to PC guys. iWork now is online too so they’ll be competing with google docs/drive. Probably will lose, but it sure is an interesting fight once again.
Anyways, iWork for more bureaucracy with a small exception – Keynote.

Keynote
Paid (Part of iWork suite/family)
Basically same as Powerpoint. It is an important tool for me. I find this tool to be great at making quick presentations and drawing couple of arrows occasionally. Usually my presentations are full of screenshots and one to three lines of text. Keynote has a nice set of standardised master slides/templates too. Nothing amazing, but not just plain white either. I think it’s good to show your beautiful stuff on a nice standardised canvas.

Keynote app screenshot

Powerpoint alternative from Apple

For other iWork suite stuff I use google drive whenever I can.

Adobe suite
Photoshop & Illustrator. These hand-in-hand. I guess I’m an old timer, but I prefer to design stuff with this combo. I build all graphical elements in Illustrator and then use them in Photoshop as smart objects. They’re still vector and still nicely editable this way. Icons, buttons, illustrations, you name it, comes into my designs editable all the way.
All photographic/raster stuff I fix/do purely in photoshop.
Also I find Layer Blending options tool to be invaluable. The expressive freedom and speed that it gives me above all other apps is significant.
I also save most of the relevant layer blends as styles so I can use them quickly later. For example two I use for different size texts are called 1px bottom stroke (drop shadow) and 2px bottom stroke (drop shadow). I also got many company specific in the Styles palette top right. Oh all palettes like this I switch to text only view. These small style avatars don’t really show anything for me as the differences are mostly very subtle (think 1px or 2px drop shadow etc.).
For text I also use Photoshop. I somehow find that either Ai(Illustrator) nor Id(InDesign) do a good deal for text. Photoshop handles text layers like I expect. I’m not saying Ps is the ultimate tool for text. Quite the opposite really. I’m just handicapped this way.
Flash. All animation with Flash. Sometimes interactive prototypes. I don’t like it for mobile development. Maybe games, but I find Appcelerator better for mobile development.

Adobe App Icons

Adobe Apps

Silkscreen
Paid (free app for iphone and paid app for desktop)
This is really valuable tool for me. It just shows screenshot .psd files fullscreen on my iPhone. It refreshes when you save psd. So it’s like a screen extension. I’m pretty much testing my screen and my phone side by side.
Simple, yet something I need as iOS is sometimes the target platform. I must look for something like this for Android too.

Screenshot of Silkscreen app on mac

Silkscreen quickly displays a psd for me on my iPhone/iPad

Coda
Paid
Really nice gui for css and html scripting. I’ve done javascript on it a little too, but haven’t got harder core yet. Some tell it’s also good for Ruby and php. Will have to look into it. It syncs my server and local folders in a really convenient way. And I can do server quick edits if I need to. Formats code nicely enough and well chosen fonts and designed UI focused for productivity, make it a really nice app.

Coda App screenshot

Coda is good for scripting web related stuff

TextMate
Paid
Quick to check text/html/xml and all other thinkable files that contain text/script. Really handy and fast to launch. And clean. Trying Sublime Text too right now, but not too sure which one is the king. Still leaning towards TextMate.

TextEdit app screenshot with xml file open

TextMate does quick edits to my script & markup files

Titanium Studio
Free
Eclipse based Appcelerator official GUI for creating cross platform mobile apps. I use it to code mobile apps. I don’t like Eclipse at all, but as it’s free and it’s officially supported GUI.

Titanium Studio screenshot

Titanium Studio, build on Eclipse

FDT
Free (has premium too, but I’ve got free)
This is a flash Actionscript coding tool. Again Eclipse based so it is not beautiful or anything, but I can say it’s Actinscript 3 coding on steroids. It just makes me so much faster. I’ve tried to code AS code in Flash itself and I’ve tried with Adobes Flash Builder but ended up with this tool. It does code completion really well. Referencing functions and jumping between key elements of the code is awesome too.

FDT screenshot

FDT is an Actionscript development tool

XCode
Free (for Apple developers)
I think the best looking and UX wise the best coding tool. Unfortunately it handles C based languages well only. Code completion is amazing. Javascript/Actionscript etc, it does not that good.
The GUI is so logical and beautiful I’m sad I don’t do C.  So I use it to test my build and change some relevant settings or sometimes add some libraries to my Appcelerator compiled projects. Also using XCode is the only way I know to submit apps to Appstore.

xCode app screenshot

xCode is a full tool for creating iOS apps.

Transmit
Paid
Ftp client. Can’t live without it. Can also do quick edits to most of documents so it’s a bit like online coding (though it just is syncing). Anyways. For mac this is the synonym of ftp.

Screenshots of Transmit app

Transmit is an FTP app

Teamviewer
Freemium(-ish)
Not so pretty but free and does the remote desktop magic. Taking over computer desktop with this app. Shows you picture of their desktop (no matter if mac or pc) and you can do anything you want. Tech support magic, but also for situations when I have to quickly do something in my home computer and I’m at work.

Evernote
Freemium
Note taking and syncing app. Really handy and has an app for each smart device that I use.

For email I use mac default mail client. Nothing special but groups email threads nicely enough.
Skype. Telephony, screen sharing.

Chrome mostly for browsing the web. Sometimes I launch Safari, my second browser. While Chrome is signed in everywhere, Safari is not. So I can see both perspectives if needed.
iTunes for music. Calendar for meetings and that’s pretty much it.

That’s it. There is probably more stuff, but this list represents apps I installed during the first week with new work computer so I might return to this subject end of next week.

Please make a quick list and share your tools below in comments. Thanks.

Tags: , , , , , , , , , , , , , , , , , , , , , ,

Appcelerator cloud service certificate

June 6th, 2012 | No Comments | Posted in Uncategorized

I see that a lot of people end up to my blog by troubleshooting Appcelerator cloud service. I have written about this in this post: Push Notification tutorial with Appcelerator Cloud

But to say it shortly again. You cannot upload .cer file but you will have to make .p12 certificate. You can do this using Keychain Access on your mac.

You will have to right click on the certificate and choose export… from the menu.

Tags: , , , , , , , , , ,

Building Server Push Notifications with Appcelerator Titanium Cloud

May 5th, 2012 | 54 Comments | Posted in Apple, apps, Titanium

Appcelerator has blessed us developers with cloud services since release of Titanium 2. Even free registered users get 1 million server push messages a month free. Server push notification means that you can send users push notifications even when the app is not running on the device.
Cloud also gives lots of nice stuff for developers which eases the pain and the need of a custom back-end for your mobile app.

Although Appcelerator allows server push, many developers find it difficult to set it up. One of them being myself a couple of days ago, therefore I thought I’d give back to the community and wrote a little tutorial showing hot to make Server Push Notifications work for your app. I will concentrate mostly on certificate management, which is the most painful part of setting up Push Notifications on Apple devices.

 

1. Start a new Titanium project in Titanium studio. For this example we’ll call it PushTest and give an app ID com.teemusk.pushtest

Project setup in Titanium Studio

Project Setup. Make sure Cloud-enable this application is checked. Alternatively you can enable Cloud services on tiapp.xml editor.

Add a simple code to your app.js to open a window and run your app on simulator once so it’ll get registered and enabled on Titanium. The code for app.js looks like this right now:

var win = Titanium.UI.createWindow({
title:'TestPush iOS App',
backgroundColor:'#fff'
});
win.open();

1.3. Run your app on simulator once to see if it is ok. There should be nothing on the screen. Just white background.

2. Set up the cloud services and Certificates

2.1. Go to https://my.appcelerator.com/apps and find PushTest app from the list (you must be logged in to see that).
Your newly created app on Appcelerator

As you can see you have Cloud services already enabled for this app. That’s great.
2.2. Click Manage and check the settings for this app
2.3. Click Settings on top tabs. As you can see Apple iOS push certificates is empty. You will have to obtain a certificate from Apple iOS Provisioning Portal (you have to be an Apple developer to do this).
2.4. go to iOS Provisioning Portal through developer.apple.com and to Provisioning portal after logging in on Member area.
2.5. Create new App ID by choosing App IDs from left and then clicking ‘New App’ on top right corner.
2.6. Add PushTest as an app name and com.<yourdomain>.pushtest as an app id. Then click Done.
2.7. Now as you can see from the list your app is not quite set up for push notifications. You will have to configure it.
Push notifications not configured on Provisioning Portal

2.8. click Configure next to your app and Enable Apple Push Notifications on the following screen.

2.9. Next part is a bit tricky as you’ll have to work through some different things to do this, but basically you will have to get a certificate for your app to get Push Notifications working. Click Configure button next to ‘Development Push SSL Certificate’. The page that opens up is self explanatory. But in case you don’t want to read all this stuff then shortly it’ll go as follows:
2.10. Open up Keychain Access software on your mac. Choose ‘Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority…’ from top menu.
Obtain a Certificate

This will open up a dialog where just click ‘Save to Disk’ and ‘OK’ and then save the incoming certificate to your Desktop. Click ‘Save’ and ‘Done’.
2.11. You have a certificate on your desktop. It’s filename is ‘CertificateSigningRequest.certSigningRequest’.
2.12 Go back to Provisioning Portal and upload this file back to Apple. click ‘continue’, ‘choose file’, choose the certificate you just saved on desktop and click ‘Generate’. This will take a couple of seconds, but after it’s done click next and download the certification with your name called ‘aps_development.cer’.

2.13. Double click on the downloaded .cer file and it’ll be added to Keychain Access.
2.14. Select the certificate in Keychain Access with the name com.<yourdomain>.pushtest and right click (or command click) on it to open popup menu. Choose Export “Apple Development iOS Push Services” from this menu and save this file with extension .p12 on your disk. You will be asked for a password. Remember what you put in there. This is the final certificate you will have to upload to Appcelerator my apps.

2.15. Now, go back to Appcelerator my app settings for PushTest app and browse and upload the newly created .p12 certificate. Also add the password you chose in 1.16. in the box next to it.

Great, you’re done with the painful part of the tutorial. Now it’s good old titanium scripting again.

3. Code the app
I consider this tutorial not to be a scripting tutorial. Therefore I will just paste my app.js code below. I tried to comment my code so you can see what each function does. This code works on your phone. To run it on your phone you will have get a provisioning profile from Apple Provisioning Portal. I also uploaded an app.js for you to download and investigate.
The results of this code will add 4 buttons on the stage. When running the app on your phone the first time start pressing the buttons from top and after each tap wait for success alert dialog. Once you reached the end you’re all set.
var Cloud = require('ti.cloud');var trace = Ti.API.info;
var user_device_token = Ti.App.Properties.getString("device_token",null)var win = Titanium.UI.createWindow({
title:'TestPush iOS App',
backgroundColor:'#fff'
});
win.open();function init(){
buildUI();
}
setTimeout(init,500);function buildUI(){
var register_local_push = Ti.UI.createButton({
width:200,
height:30,
top:30,
title:"REGISTER LOCAL PUSH"
});
win.add(register_local_push);
register_local_push.addEventListener('click',getDeviceToken);var register_user_btn = Ti.UI.createButton({
width:200,
height:30,
top:70,
title:"REGISTER USER"
});
win.add(register_user_btn);
register_user_btn.addEventListener('click',registerUser);var login_btn = Ti.UI.createButton({
width:200,
height:30,
top:110,
title:"LOGIN"
});
win.add(login_btn);
login_btn.addEventListener('click',login);var register_server_push_btn = Ti.UI.createButton({
width:200,
height:30,
top:150,
title:"REGISTER SERVER PUSH"
});
win.add(register_server_push_btn);
register_server_push_btn.addEventListener('click',subscribeToServerPush);
}//REGISTER USER ON CLOUD
function registerUser(){
trace("REGISTER");
Cloud.Users.create({
username: "new_username",
password: "new_password",
password_confirmation: "new_password",
first_name: "Firstname",
last_name: "Lastname"
}, function (e) {
if (e.success) {
alert("USER CREATED SUCCESSFULLY.");
// user created successfully
} else {
// oops, something went wrong
alert("USER not created. something went wrong "+e);
}
});
}//LOGIN TO CLOUD AS A USER THAT WE CREATED BEFORE
function login(){
Cloud.Users.login({
login: 'new_username',
password: 'new_password'
}, function (e) {
if (e.success) {
var user = e.users[0];
alert('Success:\\n' +
'id: ' + user.id + '\\n' +
'first name: ' + user.first_name + '\\n' +
'last name: ' + user.last_name);
} else {
alert('Error:\\n' +
((e.error && e.message) || JSON.stringify(e)));
}
});
}//REGISTER LOCAL PUSH NOTIFICATION HERE
function getDeviceToken(){
trace("REGISTERING LOCAL PUSH");
Titanium.Network.registerForPushNotifications({
types: [
Titanium.Network.NOTIFICATION_TYPE_BADGE,
Titanium.Network.NOTIFICATION_TYPE_ALERT,
Titanium.Network.NOTIFICATION_TYPE_SOUND
],
success:function(e)
{
user_device_token = e.deviceToken;
Ti.App.Properties.setString("device_token",user_device_token);
alert("Device token received "+user_device_token);
},
error:function(e)
{
alert("Error during registration: "+e.error);
},
callback:function(e)
{
// called when a push notification is received.
alert("Received a push notification\n\nPayload:\n\n"+JSON.stringify(e.data));
}});

}
//REGISTER SERVER PUSH
function subscribeToServerPush(){
Cloud.PushNotifications.subscribe({
channel: 'friend_request',
type:'ios',
device_token: user_device_token
}, function (e) {
if (e.success) {
alert('Success'+((e.error && e.message) || JSON.stringify(e)));
} else {
alert('Error:\\n' + ((e.error && e.message) || JSON.stringify(e)));
}
});
}

 The code above is also uploaded as a file. You can download it here

4. Send your first Server Push notification
After running the app.js code on your iPhone start to tap the buttons from top to bottom. After each tap wait for the alert message with success message.
The app looks like this:

When you’re done with this sequence you’ll ready to send your first push.
Go to Appcelerator my apps section. Choose ‘notifications’ from the tab on top and check that you have a device registered with server push. My window looks like this:

Close the app on your phone (close it totally from bottom). Fill in the fields and push send notification. Now wait a bit to receive the push on your phone.

 

That’s it. I hope you get it working and find that it’s actually quite simple once you get it to work the first time. Also I hope this tutorial saves your time a bit.

Thanks for reading.

Tanel Teemusk
teemusk.com 

 

 

 

EDIT:

An extra checklist for debugging.
1. You cannot use wildcard development certificate for trying this. be sure to use com.yourdomain.yourapp or similar and not com.yourdomain.* or anything that involves asterisk. Otherwise push won’t work. (Thanks to TaMaX for pointing this out)
2. After your app goes live to AppStore be sure to upload another p12 certificate to Appcelerator using iOS Production Push certificate from Keychain Assistant. Development Push certificate won’t work after going live. (Thanks for DevMan for pointing this out)

Tags: , , , , , , , ,
  • Ads