Lots of desktop integration features! Custom chat notification bubbles, screenshot taking, file downloads and uploads, resizable font, various keyboard shortcuts, menu bar icon, and more.
HN user
dv_says
dv
Enchat, my take on a Mac app for Facebook Messenger: https://www.mornings.com/enchat/
Using Elixir here for a couple of months, for an app backend, and even for shell script type of projects. Great language, no surprises, and very responsive community -- really, my biggest wish is for more people to try it, as I think it's still relatively niche. Had no previous Erlang experience. While you don't have to write Erlang code itself, you'll over time become familiar with Erlang/OTP architecture concepts, such as GenServer, ETS, distributed nodes, and so on.
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-...
In fact, this even can even sync new/modified/deleted files, similar to rsync. Very handy for deploying static assets or backups, for example.
aws s3 sync --delete [--acl public-read] ...Independent verification.
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
I'm assuming the big name products here have carefully measured, A/B tested, etc. every screen and they are at their best (other than Apple Music, which is a whole other creature). That said, product teams should still periodically audit onboarding content, ideally with a set of fresh eyes. Does everything still make sense? Is there a logical flow from A to B?
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.
You're on point, these help mechanisms should be rare and few, or they would be a nuisance as well.
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.
Not a fan of screen overlay tooltips as in [1]. My first instinct as a user is to get them out of my way, and I do that every time, feeling guilty. And adding a "next" button and going through tooltips one-by-one doesn't make this any better, just more annoying.
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...
A similar concept is found in Chinese writing. Numbers are written using relatively few strokes, making it easy to change a "one" into a "two."
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: 拾
There is a setting to opt out of the beta track. Check out System Preferences > App Store.
I'm really glad to have recently picked up Elixir. For anyone just starting, a few tips from someone similarly new:
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/erlOr for those who prefer automating, add this to ~/.bash_profile:
alias nuke="rm -rf ~/Library/Developer/Xcode/DerivedData/"Another vote for Elixir. Well-documented with a growing community, and the code is very readable.
Formerly using Python, motivated to migrate to a modern stack, and so recently attempted to write a simple web back-end for my apps in Go and then in Elixir. Same logic, same unit tests, two languages.
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.
Update: All promo codes above have been taken -- feel free to e-mail me if you'd like one.
Thanks for taking a look!
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!)
Thanks for the feedback! Definitely very useful for feature planning.
Thanks for the feedback! That icon is something I'd like to improve as well.
Yes! The app shows all events from Calendar (including iCloud) and instantly syncs back there if you add an event.
OP here. Spending the last couple of years abroad, I found myself wishing for an app that combined a calendar and a world clock. Scheduling phone calls/chats across time zones while double-checking your calendar could be quite a chore!
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