This is the kind of content that would be #1 years ago before HN became about regurgitating news about acquisitions in Silicon Valley. Remember that it's Hacker News you're reading. I welcome a return to those days.
I recently switched to iOS from Android after years on Android. I'm coming from being a daily macOS user for almost a decade. I would argue that iOS should no longer be considered the more "user friendly" of the two. That might have been the case years ago, but iOS seems to expect prior experience with what I can only guess are iOS paradigms specifically.
Almost every important action I need to take in an iOS app is hidden behind a gesture. In Android apps, gestures are value adds. They make on-screen actions or actions accessable through contextual menus quicker to accomplish for the experienced user. In iOS they're essential to accomplish some tasks.
I agree. Android seems to have more consistent UX for apps regardless of developer. Back button is such a key input that I always feel trapped in iOS, where as on Android everything feels intuitive and multitasking is a breeze.
Too bad it doesn't work on some apps, and that it works inconsistently on other apps, and that it doesn't work on modal screens. Then there's the added concern of trying to swipe back but instead doing a swipe gesture on some item on the current screen.
Opening the app switcher is essentially a gesture. As is opening quick settings. Opening notifications makes a little more sense as notifications appear at the top of the screen. Rearranging the home screen is also a gesture.
A long press on the icon you want to move and you've picked it up (it comes "closer" to you and moves to be exactly under your finger). Drag it around and other icons will move around to preview/indicate where it'd be. Let go and it drops into place. There is no jiggling. You can also drag to Remove or Uninstall (Remove leaves it in the alphabetical app drawer).
Creating folders is the same as iPhone.
There is a caveat that if the icon was held very still then you'll open a menu similar to 3D touch menu. I never use this because it isn't that discoverable.
I think it's probably okay that quitting apps isn't that obvious; under most circumstances you don't need to quit iOS apps. Only very specific kinds of activities are allowed to run in the background; when you switch away from an app and don't switch back to it, it's going to be force quit by the system when it needs resources. Managing iOS apps like desktop apps is kind of an anti-pattern.
I agree about point #1, but I'm also not sure how to make copy/paste particularly obvious with touch. To be fair it's not really obvious with a mouse or other external pointing device -- it's something we just have to learn.
I think the height of this is the iPhone's home button (which is gone in iPhone X, but regardless).
It has 6 functions, on a single button, based on how light or quickly you press it - single click, long press, double click, single tap (lighter then a click), double tap, triple click (if enabled)
I'm one of the core developers for Nano[1] (formerly called RaiBlocks). It's one of only a handful of cryptocurrencies with an actual working product available today that does everything it claims to do: Instant transactions with zero fees on a green network that could be powered by a single wind turbine.
Despite what I see as it's massive potential for things like micro-transactions, global remittance, arbitrage across exchanges, a development platform for payments and functioning as an actual currency (i.e. a medium of exchange, what you send is exactly what the other person gets) -- the market does not reflect this reality at all right now. There are several projects that are objectively scams with higher market caps than Nano.
To me this reflects that the market is completely irrational right now. I knew as early as January that there was going to be a reckoning, but until some of these coins and tokens that are going nowhere are shaken out projects will just have to stand on their own merits and prove that they're valuable.
It's not working because it's impossible to use Nano as currency when it has so much volatility. Imagine sending your friends $10 and they only receive $9.
I'm late for this reply, but it completely depends on your use case. If you're just a normal user using cryptocurrency daily and you're most interested in the stability of value you could trade everything you receive for a "stablecoin" as it's known within crypto circles. This would effectively "lock in" the value. This is most effective using e.g. Nano since you can perform this immediately without worrying about transaction fees.
If you're unaware of that concept as a user but a fiat "off-ramp" exists (a way to turn your Nano into your local currency) you can immediately "cash out" whenever you receive a transaction.
If you're dealing with micro-transactions or payments in general then we're beginning to wade into the territory of imaging a secondary "off-chain" system of accounting and many strategies likely apply.
That might be a valid criticism against e.g. Bitcoin with a 30 minute confirmation time, but if you send your friend $10 worth of Nano they'll have $10 worth of Nano by the time they receive it, ignoring whatever they decide do with it.
That's assuming that they can immediately send it to an exchange. Maybe my friend is sleeping or at work. In the time it takes for him to proceed with the steps of transferring to an exchange and cashing out the price in USD may have gone down.
Rebel | Senior Backend Engineer, Email Engineer | New York, NY or Remote | Full Time | https://gorebel.com/ | hiring@rebelmail.com
Hello, at Rebel we are working on making everyone's inbox an interface for immediate action. We allow our users to send their customers emails that work like a normal web experience. Customers are submitting reviews, educating themselves with hotspots, and even shopping with 1-click directly in email. We believe that the inbox of the future is going to be just another surface for people to do what they want, like a bit sized application delivered in a push. We're hiring smart engineers across the stack to help us make that a reality.
I've been on GitHub since the earliest days, and I've definitely noticed that there's something going on -- or the lack of anything going on more like it.
When was the last time a big feature that people are actually clamoring for was added to GitHub (and let's not pretend LFS fits that description)? Meanwhile you have the maintainers of the most popular projects publicly begging for changes they've been waiting years for, startups like ZenHub innovating on TOP of GitHub in the form of browser extensions, and then startups like GitLab poised to eat GitHub's lunch as soon as they figure out how to capture the social aspect.
I'm not sure what GitHub is spending the money on, but it sure as hell isn't on the core platform itself or keeping it's most active users happy.
The trick is, I think GitHub stopped being a software company. At some point (after Tom left), GitHub was taken over by finance people to just pump money out of the VC system. Is there any other explanation for why GitHub The Corporation has completely stopped interacting with GitHub The Community?
GitHub raised $250 million last year and, as you mentioned, there's nothing externally visible to show for it (as consumers of their public platform). (random guess: the $250 million could have been $150-$200 million in cashing out stock to individuals (like crooked groupon shenanigans) then maybe $50 million for operations? How many billions of dollars does it take to write an issue tracker with more features than redmine from ten years ago?)
All this gets back to a bigger trend we see these days: closed platforms are like governments (google, apple, github, twitter). We don't allow (sane, first-world) governments to exist without citizen representation. We must demand user-level representation in corporations running global scale closed platforms everybody relies on. Community powered social platforms don't exist without the community, and private corporations exercising extended "we don't give a crap about the users even though we have millions (or hundreds of millions) of them" patterns must be... corrected.
> GitHub raised $250 million last year and, as you mentioned, there's nothing externally visible to show for it
I completely agree, I've never been able to take github seriously as a GUI -- (e.g. there is still no way to search commits).
> All this gets back to a bigger trend we see these days: closed platforms are like governments (google, apple, github, twitter).
I don't think it's the same to include Github into these, the main facility provided by github is simply a centralized host for your git repo, Git is FOSS and there are a number of alternatives.
Note the latest GitSense version doesn't include branch level code searching. I'm still testing this out, and I'll be releasing another GitSense update very soon, which also includes support for BitBucket.
And sometime next week, I'm going to start looking for beta testers for my indexing engine, which is what makes all of this possible. If you have 10,000 or less commits in your repository, you'll be able to install and use the indexing engine for free. However the free version won't include diff indexing, as that greatly increases the number of moving parts.
I don't want to pooh-pooh anyone's hard work--please don't misunderstand me--but I am legitimately curious: why put so much effort into building a house of cards upon a foundation of shifting sand? Your project is completely dependent on GitHub's reliability, integrity, and goodwill. It could implement its own version of your enhancements and render yours obsolete. Arguably, it should do that, because what's the point of relegating useful enhancements to third-party products?
So doesn't that mean that your project is living on borrowed time? Why not build upon an open platform instead, one that you can control, one that can't be ripped out from under you?
Again, I don't mean this as criticism, I'm just very curious, because I don't understand.
You have a valid point, but what isn't obvious is my technology isn't really dependent on GitHub. The only thing that can cripple me is Git becoming less vogue. There are two parts to my technology:
- There is the front end which is 100% JavaScript and this is important since it allows me to build on top of existing web solutions like GitHub
- There is the indexing engine which was insanely hard to develop and is what makes my solution unique.
I've attached some screenshots that shows how I'm using my JavaScript technology to integrate with Bitbucket here:
I've also uploaded some screenshots that shows how I monitor/manage indexing. Right now, my indexing engine can easily process 10s of thousands of repositories with millions of branches on a single machine. The indexers are designed to scale horizontally and developing them was insanely hard and that's what I'm really selling. There is a reason why GitHub stopped indexing commits a few years ago. And why Bitbucket has a 5 year old ticket about code searching:
Should the worst happen and I get shut out by GitHub and Atlassian, there is always GitLab, Gogs, etc. For now, I'm more than happy to build on top of GitHub and ensuring my solution works with their Enterprise offering.
The browser extension is nifty, but Connect provides a proper API for embedding custom views in the Bitbucket UI if you want something a bit more robust (i.e. it will still work even if we decide to change the DOM at some point in the future).
I looked at Bitbucket Connect, but it looks like everything is done via iframe for obvious security reasons. This doesn't appear to be the case with Bitbucket server.
Somebody from Atlassian has reached out to me and I'll get back to them next week to see what can be done to get this working with the Connect framework.
The same can be said of anything built on top of the Twitter's and Facebook's of the world. Of course there is risk, but there is also some reward there too that is possible. It is a good question, but almost any API published by a corporation has risk of it being ripped out from under you.
You cannot do this for private repos? Anyways besides that, just having to know these hacks means there is absolutely no sense in committing to using a GUI tool when all of this is adequately implemented in command-line. Why a company with estimated worth at billion dollars+ can't add something as simple as commit message search though -- I don't know.
No you can't do this for private repos and it's kind of a hack anyway.
Just slapping a GUI to the command line interface wouldn't scale but given that they already support code search I don't understand why the don't support commit message search either.
>Community powered social platforms don't exist without the community, and private corporations exercising extended "we don't give a crap about the users even though we have millions (or hundreds of millions) of them" patterns must be... corrected.
The big difference here is "Community powered social platforms" don't pay a tax like citizens of the government do.
And, like some of us are trying to undo today, representation in a government/corporation skews heavily towards those that pay the bills.
Whenever a company stops communicating frequently and candidly with its core user base (even if they are free tier users), then you know they are suffering from systemic issues internally and probably are or will be on the decline.
When I went to a GitHub-organized meetup in Berlin a few years back, they bragged how a bunch of them decided to rent a place in the city for a few months, to work at day and party at night, I realized they were maybe a bit too chillaxed.
Maybe they are completely unrelated, but when ever I hear about GitHub being in trouble, I first think back to meritocracy being divisive issue. Of course, removing a rug shouldn't have any direct impact, but the top level management mentality that will do something like that may not be the best type of management for being innovative or getting things done. Getting things done is divisive in the same way that meritocracy is divisive.
For my team's (~20 people) uses, Github (and the tools we and others develop ontop of it) meets our needs amazingly well and literally would be 100% worth the price at 10X the cost.
I don't think the fact that others have built tools on top of github means that github is lacking features, in the same way that the existence of github doesn't mean that git is lacking features.
On the other hand, seemingly ignoring your adoring fans asking for small changes is a bad move.
It's funny you mention that, because I'm on a team of 7 who are really struggling with GitHub now. There are so many things that we know don't work, or could be better (which I have reported).
I'm not an Erlang dev, but a quick look at the Erlang docs shows:
"If you need to access a relational database such as sqlserver, mysql, postgres, oracle, cybase etc. from your erlang application using the Erlang ODBC interface is a good way to go about it."[0]
"It is built on top of Microsofts ODBC interface and therefore requires that you have an ODBC driver to the database that you want to connect to."[0]
"But currently it is only regularly tested for sqlserver and postgres."[1]
"But currently it is only tested for Solaris, Windows 2000, Windows XP and NT"[2]
The fact that C# came out with 36% more lines than Java would make me doubt much extrapolation about productivity from these numbers. You can do a token for token substitution of Java and end up with close to compilable C# code; there are only a handful of things Java has that C# doesn't, while C# has many more abstraction tools.
I'm willing to bet that most of the Java code could be made shorter with the use of more functional style code in Java 1.8 (which might be why he labeled it "Java 1.7")
Note that `return None` isn't needed - Ruby doesn't have it, so that's a "wasted" line. The function should also be more like
def prn(*args):
print(" ".join(printer._pr_str(exp, True) for exp in args))
or, if Python 2 support wasn't needed,
def prn(*args):
print(*(printer._pr_str(exp, True) for exp in args))
Defining these out-of-line is a good idea, though (it improves introspection in Python).
`mal_readline` has a bit of support for Python 2 which takes a few lines, but mostly it's code like
try:
with open(histfile, "r") as hf:
for line in hf.readlines():
pyreadline.add_history(line.rstrip("\r\n"))
pass
except IOError:
print("Could not open %s" % histfile)
pass
The Python code handles errors but has two pointless `pass` statements and a couple of odd choices. It should better be:
try:
with open(histfile) as hf:
for line in hf:
pyreadline.add_history(line.rstrip("\n"))
except IOError:
print("Could not open %s" % histfile)
Note that the Python uses lazy reading which is why it needs explicit closing; Ruby likely would too if it read lazily.
I have no idea what's up with `mal_types`/`types`; Ruby does simple stuff and then Python does... something. I will say that the Python can be a lot simpler at minimum, although I'd need to grok what it does before I can say what. For example,
elif _hash_map_Q(a):
akeys = a.keys()
akeys.sort()
bkeys = b.keys()
bkeys.sort()
if len(akeys) != len(bkeys): return False
for i in range(len(akeys)):
if akeys[i] != bkeys[i]: return False
if not equal_Q(a[akeys[i]], b[bkeys[i]]): return False
return True
can be replaced with
elif type(a) is Hash_Map:
return a.keys() == b.keys() and all(equal_Q(val, b[key]) for key, val in a.items())
I think the `_Q` suffix is a the writer missing Ruby's `?`-suffixes on identifiers.
There's also a lot of mess that I think arises because the writer might not be aware that you can make callable objects in Python.
I think in the end it comes down to language experience. My Ruby would probably look as hacky as Joel Martin's Python. I doubt there would be as large a difference if they were both written with the same language familiarity.
Python is one of the oldest implementations and I ought to do a another pass through to clean it up sometime.
I'm happy to take pull requests that make an implementation shorter and/or more idiomatic as long as it doesn't change the overall order/flow (and doesn't break any of the tests of course).