280 karma · joined April 28, 2015
Was very happy to see this recent post from Pinterest [1] as a sign that some of the more "mainstream" teams are starting to look at it.
Also, a repost [2] of some helpful tips if you're just getting started.
[1] https://engineering.pinterest.com/blog/introducing-new-open-...
aws s3 sync --delete [--acl public-read] ...For example, this could have helped in [1][2][3] where toxic food products were very mislabeled.
[1] https://en.wikipedia.org/wiki/2008_Chinese_milk_scandal
It would have been interesting to be "a fly on the wall" and see how some of these evolved over time. I suspect some of the oddities initially started with a good set of screens, but then a new piece was later tacked on without a full audit or without the resources to change everything else.
The problem with forced screen of tooltips in the very beginning is that you haven't had a chance to explore the app yet, and so it's hard to mentally assign importance to them. And later, they're gone.
Actual games (such as GTA or Cut the Rope) do a great job with onboarding, and apps tend to take the simpler show-everything-in-the-beginning way.
Two alternatives I've tried as an indie dev:
- Gamification, where you ask the user to perform one task, such as "drag X to Y." Only after they performed the action move on to the next prompt, and perhaps not even immediately.
- Utilizing badge counts or "bouncing" animations to indicate some action that needs to be performed. The benefit is that the user can try it on their own time, and you're not rushing them. The downside, though, is that some users may never actually click.
On the flip side, these approaches can add complexity in both code and how you structure your UI.
[1] http://s3.amazonaws.com/marquee-test-akiaisur2rgicbmpehea/R9...
1: 一 2: 二 3: 三 4: 四 5: 五 6: 六 7: 七 8: 八 9: 九 10: 十
For financial documents, a more complicated form of symbols is used:
1: 壹 2: 貳 3: 參 4: 肆 5: 伍 6: 陸 7: 柒 8: 捌 9: 玖 10: 拾
a. After launching the "iex" shell, press Tab. You'll get the list of all built-in commands.
b. The help feature is also very handy for when you're wondering what an operator does. Type "h <command>" for a definition.
h !/1
c. Try the pipe operator. Your code will closely follow the transformations of your data.Instead of this:
m1 = "moo"
m2 = String.replace(m1, "m", "z")
m3 = String.upcase(m2)
Or this: String.upcase(String.replace("moo", "m", "z"))
Try this: "moo" |> String.replace("m", "z") |> String.upcase()
The result of each command will be passed as the first argument to the subsequent command.d. You get seamless interoperability with Erlang libraries.
:crypto.hash(:md5, "bob") |> Base.encode64
e. Try the Observer tool in iex to visualize various aspects of your running application, including the supervision tree, details on each running OTP process, and much more. Seriously very handy stuff. :observer.start()
f. If you're using EC2 like I am, Amazon images have a too-old version of Erlang, but it's trivial to compile things yourself: sudo yum install gcc glibc-devel make ncurses-devel openssl-devel autoconf
wget https://www2.erlang.org/download/otp_src_18.0.tar.gz
tar xvzf otp_src_18.0.tar.gz
cd otp_src_18.0
./configure && make && sudo make install
sudo ln -s /usr/local/bin/escript /usr/bin/escript
sudo ln -s /usr/local/bin/erl /usr/bin/erl alias nuke="rm -rf ~/Library/Developer/Xcode/DerivedData/"Really liked: the simplicity of Go's build, not having to spawn N processes on the server side, the compiler catching so many issues, the very strict formatting rules, all a major win over Python. However, didn't like how verbose the code turned out, especially for parsing or any data manipulation tasks. For server-side debugging/tools, it's also a bit of a build-your-own adventure.
Elixir I found to be much more pleasant to write and subsequently read, more well-suited for back-end tasks, great for generating and parsing data. Also, more things in the toolset for back-end deployment, in large part due to the OTP stack.
Perhaps Go's ideal use case is local system tools, compilers, or anything else that requires concurrency (let's say, creating tools like "ls," or Apache bench, or gcc, or cURL), and something like Elixir is more ideal for building actual servers.
Double-clicking to add events and more consistent branding are definitely on my to do list. Mornings is a suite that will include more productivity apps (in the works!)
I built this app in Swift over the last couple of months and would love to hear what you think.
Below are some promo codes for HN. To redeem, open Mac App Store, and click "Redeem" on the right. If they're all gone, just drop me an e-mail and I'll be happy to give you another.
WELRJK474JLH
9EWL4X4RANRL
H79NF3W9NFAJ
3MNEJ6EK3EH3
M3X9KEWXJXM9
WFHJMLXYNP33
TP6L4HPLM7W4
W73HF7RAK7WH
PKLMM9RXLFRA
A3ER7AAEF4TP
TJA6KA9X36NA
7KKM9FAXR6FN