My primary complaint about Unix CLI is that the commands try to do two disparate things simultaneously: outputting text for humans and generating data for consumption by other commands. In a properly designed command line ecosystem (it's far, far too late for that now), there would be good human readable output in one mode, and tools would exchange structured, already escaped data amongst themselves in another mode. Alternatively, the shell would render the output for humans, and tools would just communicate in machine format.

Consider for example executing a compression command on all jpg files in a folder and below. Currently, the syntax goes something like this:

find . -iname "*jpg" -exec gfxcompress {} \;

Naive Unix users would have expected this to be achievable by piping, but no! In reality there is a special syntax of the find command that does this, and it's not completely clear how you would deal with file names further down the line, or how you would achieve further chaining. This syntax is also completely unique to the find command. You can't just plug in another data source and perform the same operation. In a CLI where tools are designed to be chained, it would look something like this:

find | match :name="*jpg" |> gfxcompress :name

In this example I used an imaginary |> operator to indicate I want something performed on every item, and I can refer to the "name" field of each directory entry directly. If I wanted to filter by time, for example, I might use the :time field instead, without any need for explicit support. If I wanted to mutate the name somewhere in the chain, I could do it. If I wanted to chain additional commands, it would be obvious how. And it would just work.

The same goes for error handling. Imagine a compiler spitting out structured error information which you could use directly in other tools without having to parse and interpret it first.

History should be recorded in non-volatile storage immediately, not just on clean exits (can do this in bash, but it needs to be the default).

You should be able to step though history for just arguments (can be done in bash, but needs to be easier).

Take a look at TOPS-20: it had "question-mark help"- any time you hit ?, it told you what the next argument is for.

The terminal emulator should have inline graphical output- it should not be text only. Someone should define a protocol so that you can have full graphical programs running in the terminal emulator. When you exit the program, the last view remains in the scroll-back history.

Some plan9 things are good: network access should be in the filesystem so that you don't need special programs like wget: cp /net/www.google.com/http/index.html foo

Same with local I/O: parameters for opening a serial port should be part of the filename when you open, something like: cp foo /dev/ttyS0:9600n81

The filesystem should be extended to also be a database. SQL is ugly, but some kind of relational algebra query language should be built in:

cat /mydatabase/name="joe" is like 'select * from mydatabase where name="joe"'

I'd basically like to have powershell. Potentially with a better introspection and attributes so that you can build a more interactive CLI. For example output size estimation + tagging local read-only commands to allow showing some output preview as you combine the commands. On-a-side display of help for arguments.

My pet hate is that commands themselves cannot tell you things about them in a structured way. There's no reason why completion and --help are somehow separate from the execution itself.

Love: context aware shell like zsh/oh-my-zsh provide. If I'm in a git project, show me a good git summary for example. If I'm in python venv, tell me about it. If I'm in some python project, extract its name from setup.py.

Don't google errors. Don't network anything that isn't explicitly requested to be networked. Don't give any built-in affordances for HTTP or other poorly-designed, politically-imposed protocols. I don't even know what you're talking about with microservices, as that notion only makes sense in the context of implementation details of RPC services ("Cloud APIs" in 2016 parlance).

A modern shell would:

- Never use text as the interchange format, but rather keep binary representations in memory and link all commands in a given interaction into a single computation, doing inlining and optimization across the boundaries of what are currently separate processes communicating via pipes/IPC.

- Know about the structure of valid invocations of commands (essentially, their type signature and the algebraic type structure of their parameters), preventing any "invalid invocation" error messages a priori. Only valid options would be permissible for tab-completion, and un-tab-completable options would give error feedback directly without executing the program.

- Have a principled, data-race-free alternative to the filesystem for persistent storage of data, which maintains type information without preventing useful generic operations like bytewise encryption.

- Support unicode as the only character set for text.

- Encourage proportional fonts, so as to make box-drawing characters not work properly. An associated UI system would permits applications to refer neither to character cells nor pixels, but only to a graph of modifiable or immutable values and a set of presentation hints. Platform-specific modules would interpret these based on the capabilities of the local terminal. Full graphical applications over SSH are trivial under this model--no more "I use a shitty 1980's-era UI because that's the only thing I can export across the network consistently".

- Allow addressing both local and remote system resources (RAM, CPUs, I/O devices) via a uniform interface, and allow dynamically attaching and detaching these from running processes, both local and remote.

- From a more traditional shell perspective, it seems important to support "by" operations with good ergonomics. This is stuff like "sort all these files based on the output of applying this other file-accepting command to each" or "filter out all paragraphs in a text file containing the string 'foo', but only print the last seven characters of each one.".

I'd like to leave this cautionary tale against getting too clever from the Jargon File:

Warren Teitelman originally wrote DWIM to fix his typos and spelling errors, so it was somewhat idiosyncratic to his style, and would often make hash of anyone else's typos if they were stylistically different. Some victims of DWIM thus claimed that the acronym stood for Damn Warrens Infernal Machine!'.

In one notorious incident, Warren added a DWIM feature to the command interpreter used at Xerox PARC. One day another hacker there typed delete $ to free up some disk space. (The editor there named backup files by appending $ to the original file name, so he was trying to delete any backup files left over from old editing sessions.) It happened that there weren't any editor backup files, so DWIM helpfully reported $ not found, assuming you meant 'delete '. It then started to delete all the files on the disk! The hacker managed to stop it with a Vulcan nerve pinch after only a half dozen or so files were lost.

The disgruntled victim later said he had been sorely tempted to go to Warren's office, tie Warren down in his chair in front of his workstation, and then type delete $ twice.

I think it's an interesting idea that a terminal editor can have text only input, but the ability to draw real high-res graphical output. e.g. a canvas to draw your matplotlib diagram in the terminal output or a more graphical version of htop (with time data graphs etc).

My biggest pet hate is the single tasking. Which is more to the nature of scripting languages. It would be great to have an event command queue.

<rant>Each time I do a npm, apt-get, brew command it irks me that all the downloads happen then they unpack, then they process. Where really it should be put on an event command queue. That way downloads can continue whilst processing is happening.

I have the same bug bear about the GUI, if I want to transcode a set of videos and move them to a NAS it's a linear process. I keep promising myself I should write a small app to get it done properly. I just wish the operating system was a little better at it. The main pain point is that if I send 10 files to my NAS it will transfer them all at the same time and take forever because of the seek time. What OS's should be doing is queuing up these things to make the transfer quicker.</rant>

In TCC/LE (a CMD replacement for Windows by JPSoft) there is one little feature that I miss in Powershell because I got so used to it: if you just enter the name of a folder (as if it's a command), you change dir to that folder (so no need to type the 'cd').

In Powershell you just get an error that this thing is not executable. A waste of semantic space, IMO.

Although, through a long career, I've become accustomed to a wide variety of CLIs, I tend to agree: We've moved beyond 1999 a bit. The fact that a lot of these systems have legacy and tradition isn't sufficient. Languages like COBOL also have a long history. But now we have lots of other languages to choose from.

First off, as much as possible, I'd eliminate non-words. I tutor a lot and people think perhaps I have a speech impediment the first time I say "grep". (Yes, I know, it's not technically part of the shell. But okay how about "fi" and "esac"? Really? Why not "enod" then?)

I'd take command completion further: IDEs often have drop-downs and function signature descriptions as you move along coding. In a hypertext world with tooltips, etc, I think there's be a lot of room for those types of ideas.

I do think the philosophy of "do one thing and one thing only, but do it well" is a good one. Piping stuff together is wonderful. I wonder if it would make sense and be shorter to explain in plain English, if the "water flowed the other way" instead. For example:

"sort the output of the find result" = sort | find

as opposed to:

"take the output of find and sort it" = find | sort

(That last bit was just a random thought of the moment, just trying to think a wee bit outside of the box.)

I have my urxvt configured to open http(s) URLs in my browser, but it would be nice if I could open URLs of arbitrary protocols via handlers. Similarly, being able to distinguish valid pathnames and open them in $EDITOR/$VISUAL (or perhaps via special file-type handlers) would be a nice.

Overall, I'm not particularly dissatisfied with the state of the command line in 2016. My experience has been that I make no more (or fewer) mistakes with command-line interfaces than I do with graphical ones, and that spending a few seconds thinking about what I actually want to do prevents me from using the wrong approach (i.e., a graphical or console program) to a problem.

I've tried using Elixir's iex as a login shell. It was an interesting experience. The pipelining in Elixir actually makes it feel a lot like bash. In Elixir, remote shell [1], autocomplete are built in. Strings are binary. Structs help structure output for human vs machine use (e.g. see HTTPoison.get("http://example.org") vs. HTTPoison.get!("http://example.org"). Processes are cheap. Functions are compostable. Rock on!

A standard method for programs to provide help, examples, and tab completion suggestions to the shell. Right now we have man, info, --help, -help, -?, etc, and tab completion is part of the shell rather than the apps. If all of that was standardized the tools could be much better.

You should have a separate output for humans, instead of having a flag for it, and programs which are the last in a chained series should default to it, but you could also redirect stuff to it in the middle of piping.

* Embeds a full programming language - but you don't need that language to run straightforward commands

* Completely embraces parallelism without pain

-- Including being able to spin off and manage daemon processes

-- And having a painless way of managing (plumbing, in other words) inputs and outputs of each stage - {Uni,Linu}x shells haven't really improved the way they do this in over thirty years, and they didn't get it right the first time!

* As much as possible of the operating system's capability should be exposed, to as deep a level as possible, through the CLI

* Not tied to one operating system - inherently capable of being applied to any (or at least any common one)

My preference would be that the CLI presents a genuinely object-oriented representation of data and the programs that know how to interpret the data, plus the operating system services as well.

Microsoft's PowerShell satisfies a lot of these requirements...however, it falls way short of the "Low bar for entry" criterion, as anyone who's tried to learn it casually will have discovered the hard way.

A Pythonic shell could also be made to work (yes, I've tried using Python as a shell. No, it didn't go well), but would require a bit of nurdling to bring it into compliance with most of the requirements above, particularly the human interface ones.

A lot of questions here - a lot fewer answers, but I thought I'd throw out these thoughts for the assembled masses to contemplate, be inspired by, or tear to pieces.

I'd like to see a good CLI design involving sandboxing-by-default, and handling object-capabilities (e.g. file descriptors) as first-class objects.

Right now, "convert a.jpg b.png" passes the strings "a.jpg" and "b.png" to ImageMagick's convert command, but that command is free to open whatever files it wants, since there's no distinction between strings vs resources such as filenames, network sockets, etc.

You can do this with pipes in simple cases, and bash has some support for this, but it's very primitive and the syntax is cumbersome.

People say Windows' Powershell using some sort of objects rather than a text stream is good.

For me I want better control over how my shell records and stores history. I want it to record more and probably not in a flat text file. I don't want it to write commands that fail to disk but I do want them in my history so I can correct my typo and run again.

I'd like lines to be rewrapped if I change terminal dimensions. I'd like more automatic pagination (rather than forgetting to use less and nuking your scrollback). I think is an issue with mintty/putty but I'd like its command history to be printed correctly after changing the terminal width.

Pet hates: terminal bells that I didn't explicitly ask for; middle click paste; the obscure terminfo file that sometimes controls the features a program uses.

The degree of compromise depends on the sophistication of the attackers. It might just be unnecessary credit card charges. It might be that plus full system control.

My take is that the only way to assess the level of compromise is to see if Intel's Asset Management Technology [1] has been enabled. That means looking at the BIOS. It might be easier to ship the computer back and forth than to walk through diagnosis and repair.

My naive intuition is that sharding on two or more axes with some denormalization makes sense: e.g. sharding on both geospatial location and information layers. Infrequently modified elements that overlap several geospatial regions could be stored alongside each. This implies eventual consistency and high availability. On the other hand, some elements might need higher consistency and therefore have lower availability.

Which is to say that the proper architecture is one that allows accurate metrics and high levels of tuning based on actual use and application requirements.

Having to query against 2 or 4 nodes is not bad, because you can and should run them concurrently, so you've still got the latency of one query. I wouldn't want to overlap data because that opens a new door for inconsistencies to occur.

Are you really a hedge fund in that you actively hedge your positions or are you just an actively traded long-mostly fund that calls themselves a hedge fund because it's a trendy label? What benchmark do you compare yourselves to? Are you sure you haven't outperformed the market simply because REITs have been such a strong asset class since 2010? It's extremely unusual for any actively managed funds to consistently beat their benchmarks net of fees, and those that do, typically have no problem attracting huge amounts of capital (to the point where they lose their ability to outperform). A Random Walk Down Wall Street by Burton Malkiel [http://fave.co/29ZnkN6] is a fantastic book for anyone who wants to learn more about why this is.

Only accredited investors can invest in hedge funds. The requirements for becoming an accredited investor, as described by Rule 501 [1] state that an individual's net worth, excluding real estate must be over $1,000,000 or have an income of over $200,000.

I think one of the biggest struggles to "growth hacking" a hedge fund are the regulator requirements. [2]

An RRSP in and of itself is not a fund type. Similarly to a 401K it is an account which holds investment positions (e.g. Mutual funds, ETFs, single-stock positions).

As for 'growth hacking', that's really not a mindset I would recommend for any investment strategy. First, think of the asset class (real-estate), the investment strategy and the securities/investment products involved: can you scale them up and be as profitable? If you can demonstrate that you can, then growing the AuM shouldn't be too hard. 'Growth hacking' sounds like smoke and mirrors - I wouldn't recommend that terminology with investors.

Caruana- as a more constructive comment, I would say your question is more one of marketing retire than investment strategy. In that sense, one advice I would give is to focus on customer education. The majority of funds, whether they are institutional funds or retail funds, do a poor job of educating clients. Especially with technology involved - a client who understands, is comfortable and truly engaged about your technology will probably stick around longer in the not-so-good times. From a sales point of view, education is a differentiating factor. My 2 cents, Canadian.

Could you go into detail about how you are technically advanced relative to your competition?

Would be curious to hear what that entails / differentiates you from other investment firms in the same space. The alternative data space taking off among hedge funds is pretty interesting, and I'd be interested to hear how a real estate fund approaches it.

1. Spend much less than you earn2. Try to just spend 30-40% of your income, but an emergency fund which stores 6 month worth of money, and then invest the saved money.

What I recommend, is a little game:1. Don't eat out for a whole month2. Don't do any big purchases for a whole month

You will see how much many you usually spend, and how your mind is triggering you to buy things. It will be really hard, so instead of thinking about "oh no, I shouldn't buy this", just write a note on a piece of paper everytime you want to buy something.

At the end of the month, you will see how "stupid" you were to want a certain things. If a certain things come up on this list over and over, then maybe it could be useful.

For me the simplest solution is to have a second bank account I never take money from. Then every time I get my salary a certain amount gets moved to the savings account. I do not miss money I never really had.Additionally some days before my salary all my money above a certain threshold gets also moved to the savings account, so that I have the same money every month, even when I spent less.Also I have my I am poor level. When I have less than 1000Fr/$ I cut my spending to very basic things like food only. This protects me from depth and touching my savings.

All of this is easily possible in nearly any bank in Switzerland, I am not shure about the US or other parts of the world. Hope I could create some inspiration.

My method which is my least favourite but most successful was to marry a quite frugal woman. I was never the type who had any money left at the end of the month but have just put a 55k deposit down on a new house and have money left to furnish it (about 2 yrs of saving). I also have a young child, live in a nice area with high rent, have a car and have many hobbies which I enjoy regularly. The main savings have come from cutting back on expensive impulse purchases, the second would be cutting down to one coffee a day and bringing my own lunch to work. Next on my list is to quit smoking which should also greatly increase my savings ability.

Personally, I save money by not buying stuff. Otherwise I tend to buy secondhand. Requires some sort of lifestyle to get this to work, since you don't always find stuff the moment you need it.Not needing/wanting to spend money, is also a (new) mindset; appreciating or even realizing/knowing what you already have. Yes, this is very close to tree-hugging-hippie-style-living, but what the heck :)Also: never, ever spend money you don't have. Don't borrow money. Maybe for a house, but never, ever for a car, t.v., laptop, whatever.

Until it was acquired a few months ago I was a longtime user of FatWallet to make a few percentage points back on the dollar at many stores.

2. Jet Anywhere

Jet.com has an incredible cash back program called Jet Anywhere. While the number of stores is small, the percentages are very strong. For example, 20% back at Nike or Saks Fifth.

What I'm getting the most out of though is plane tickets. Flight purchases through them get 5.6% back via Orbitz or 4.8% back via Expedia. After verifying you completed the travel, they dispatch cash back in the form of Jet Cash in 30 days. Many items on Jet are equal or cheaper than Amazon, so this is effectively cash. 5% back on plane tickets becomes a significant amount of money very quickly.

By the way they do not have a Chrome extension and I have interest in working on one.

3. Cash back credit card

I also purchase everything on a card that gives 2% cash back on every purchase without exception. This is literal cash off your bill, not a rewards program.

I've received $100+ back from the first two methods, and even more from the third.

---

I'm really passionate about the topic of "money hacking" and happy to discuss more via email if you're interested. I'm currently writing a few blog posts on personal financial habits myself.

I read a lot of philosophy books. They taught me to think deeply about the things that make me happy, and it turns out most of the things that make me happy are essentially free (reading, coding, etc).

I doubt it'd work for everyone, and it would be tricky to turn in to a Chrome extension, but something that put a Stoic quote in to Amazon's checkout page might help people.

1. Learn cooking: Saves a lot of money, healthy and a lot of long term advantages.

2. Learn to do the 'beginning with the end in mind': A lot of us here in India go and buy a plot on a reasonable loan, and then try to clear it off within 2-3 years. This way you get to acquire a resource, make a investment, and are forced to save up every month to clear the loan. This is more like forced savings. Repeat this for a long time, and you will get really really rich.

3. Keep a diary: Keep a habit tracker, try to get a continuous streak of $0 expense days.

4. Pick up a hobby like music: Gets you entertainment without bills for TV/Cable and things like that.

5. Buy for need and durability: Don't buy everything that you see people buying. Buy only if you need something and buy durable stuff.

There are a range of other things I do. But it might get a little too long for a HN post.

It wasn't until recently that started to cook my own meals every day. I felt time was always time limited when I worked for a company so I would get takeout a lot. Especially in my time in Toronto due to the large amount of good places to eat at. Switching to eating predominantly stuff I make has saved a lot; next to rent food was my biggest monthly expense.

Phone plan:

In Canada carriers have different plans for each province, with the prairies getting the best deals. It's gotten so ridiculous that there's a "black market" where resellers sell SIM cards from other provinces and carriers trying to lock that down.

Anyway I lived in Manitoba and got a phone plan there where I'm paying half the cost for 3x the amount of data and features I would get in Ontario. The only downside is that most people calling me would get dinged long-distance since I'm using a Manibota number in Ontario, but Canada-wide calling plans are so common for mobiles now that I don't feel guilty about it.

Ad Block Plus, no ads, no desire to purchase the products I didn't see.

Seriously, not buying stuff / eating out is the best way for me to save money, especially if I spent the time that I would have been shopping / going out, working.

Something that might be an idea is linking to a savings account and adding a button beside the purchase link on amazon, etc, like "Save money instead, if you saved $56.32, you'd have $2345.54 in total savings" it would be epic if it went into a GIC or something not very liquid.

We have a current account for day to day expenses (groceries, toll road pass top up, a couple of meals out) and the same amount gets out in that at the start of the month. Then with a separate bank we have an account for all direct debits and standing orders (mortgage, electricity, internet, phone etc) including a standing order to an investment account which we view as a monthly expense (we are essentially paying ourselves but it's taken monthly so no excuses to miss paying it), so we put the same amount in to that every month.

We then have a number of savings accounts that cover the various expenses that crop up on an irregular/long terms basis. Holiday fund, clothes fund, Oh Crap! fund, TV License, insurances, christmas/gifts etc. We know how much needs to be in these by the time a payment is due (say annual payments) so each month one 12th of the amount gets added so when the payment is due the money is there. For gifts and christmas we adjust as we go on a six monthly basis, basically by Christmas we know we need a certain amount and it's great come November and all of christmas is paid for.

Any money left over gets put into a either investments or a big pot for a large purchase we may want to make in the future (eg, property).

Historically we have tracked expenses with a web app that I wrote however recently have switched to Pennies on iOS.

For cash back we use Quidco, to reduce monthly costs we look at moeysavingexpert (Martin Lewis's old site).

Beyond that we often check if something counts as lifestyle creep - the tendency to needlessly upgrade aspects of your life just because you have more disposable income that before. If we see a habit developing that costs extra money or we are making a big purchase we have a quick chat and ask if it's needless lifestyle creep? Sometimes we decide it is and we're ok with it, other times we'll decide that in the long run it's not worth the extra spend so stop.

Give me a chrome extension that always alerts me if I am missing a possible coupon on an e-commerce site that I am on. For example, automatically check sites like retailmenot.com etc and tell me possible coupon codes for a product i may be checking out without applying any coupon. Bonus points if u also apply that coupon for me :)

Since I set a goal for myself(hose/flat/something like that), I looked for a lot of ways to save money, my tips are:

- keep track of every cent spent, i started using GnuCash, but there are a lot of other solutions available- don't buy yourself a lunch every day, make a sandwich at home, or buy a thermo-box for warm food (this saves me ~30 every week)

- if possible, drive by bike instead of the car or public transport

- i changed my petroleum gas and power provider and save about ~100/y

- my opinion about coupons and "best deals" (on the web) is: they only mislead you to buy something you don't need. I only use coupons for grocery, and here you also need to be careful and compare the reduced price to prices of other stores.

- instead of going to the cinema/restaurant my girlfriend & I make picnics in the park or nature near, sometimes a bottle of wine + glasses is sufficent ;)

- second hand buying, ebay doesn't have the good deals anymore i think, but there are other (local) platforms (maybe there is a plugin which cross checks other platforms and puts it next to te amazon price tag?)

There are a bunch of apps that help you spend money more efficiently - but I always feel they're in the lower % of effective saving, and the real answer is 'choose not to buy that thing'.

So my question is - are you looking to help people buy thing x more efficiently (and I'm not sure there's a lot of unment need there), or to help people not spend at all (in which case monetisation becomes contrary to the goal of the app).

Eat out LESS - invest in kitchen appliances :). I wonder now how I lived without a FOOD PROCESSOR and ate out/prepared not so good food. Must haves food processor, a flask, a good lunch box. Take home food to office, beach, parks. Life gets so much better. Though one cannot avoid an occasional icecream on a summer day ;)

Invest on health - buy an exercise bike, bench/squat rack instead of gym. Saves a lot of time and money.

Buying second hand. From utensils to a motorbike, the amount of money I have been saving is insane. Perhaps if the extension showed me the second hand value of the item or when available, where to get it?

I never buy anything unnecessary if I'm counting how much financial impact it's going to have. I don't have a car, but if I do, it's because I need it for the income, or because I have so much money buying a car feels like getting a packet of chips. "Why not, looks like something fun to do.".

you might look into helping people save people money on their work commute. i save something like 232 euro each month by commuting outside of peak rail times (meaning i spend just 99 euro each month on this). but I'm not sure what the costs are for other options (if i bike it would cost more time, if i get a car then there is a number of costs to take into account). an app might analyse all the options and give people a good overview of the pros and cons.

Essential life habits: reduce, reuse. Do I need to buy a new thing? Do I have space for the new thing? (housing floor space costs a lot here) Am I really going to get good use out of it? Can I just use the old one or buy something good enough from a charity shop? Can I make do with the $2 Chinese electronics solution?

About once a year or two I'll pile my downloaded bank transactions into a spreadsheet and look at the biggest categories.

I'll also reccomend moneysavingexpert.com to anyone; UK-focused but great general advice. I'm not a big fan of coupons as they're mostly a way of getting me to buy things I wouldn't otherwise, which isn't actually a saving.

I stumbled upon this, which I think is pretty cool, www.wealthnation.com (every time you spend money on your card, it rounds up your purchases to the nearest dollar and saves them for you). On the other hand, you also have Robo-advisors like "Acorns" who do the same thing, but instead of saving it - they invest it shares.

I like simply using the approach of pretending a portion of my income doesn't exist at all. I've got a Money Market account that I shuffle money over to automatically, and in a reasonable enough quantity that I don't have to run the risk of tapping into it.

I make a point to never look at my paychecks and never check the balance of the account, and instead simply deal with my post tax, post saving total.

It doesn't lend its self to an app, but it has served me well over the years.

its a shame banking services are still pretty archaic in their infrastructure - with secure access to user data through a good, secure, api, i'd love an app that would give me alarming notifications if i was spending money out of my account. :)

GnuCash, definitely. Habit of my lifetime is to enter all expenses and incomes on a daily basis. It makes you accountable, and once a month I can sit down and check on financial plannings, where we are and where we ought to be.

YNAB is a paid SaaS whereas Gnucash is free, libre and has a nice mobile client to accompany it. Mobile also uploads to cloud storage, from where you can auto-import on desktop client startup.

I like the CamelCamelCamel.com extension for amazon. It does something useful - shows me price history graphs so that I can see if that 40% discount is actually a discount or a sales tactic...and they also allow me to set alert for the stuff I buy in bulk but need regularly (toothpaste etc).

Often I will dip into lifestyle savings if I overrun my daily spending.

The best simple extension would be to have something that tracked my current spend for a month against time left in a month for my 'daily spending' account. But not sure I'd want to give just anyone access to my bank details.

* Walk a bit more so I save money on my drive to work * Work from home most of the week * I've stopped eating/ordering outside food dramatically * Stopped smoking cigarettes almost 15 months now * Reduce alcohol consumption * Turn off fans, AC, TV at home/office

And of course, investing. I usually force myself to invest whatever money I get in stocks or forex trading.

I physically put a piece of electrical tape over my Visa card number. It sounds completely weird but I encourage everyone to do this. You'd be amazed that when you whip out your card all excited to buy something that it really, really makes you embarrassed to use it in public. Aka save the money, or you can't afford it.

Before I purchase anything, I read reviews, both positive and negative for balanced views. A lot of time negative reviews change my mind, even when product is rated highly overall. Though it is not intentional for me but I guess if someone is trying to save money, show them negative reviews first.

Instead of buying a house, bought a triplex. I save about $2,000 a month in rent/mortgage from this one decision, and it only taxed my willpower once. And I get to go out with my friends and loved ones as much as I want without running into any money problems.

I do something that's been working for me:i save X amount every month ... if I save > X then it makes me happy , the rule is never save less than X , whatever it takes.I don't buy expensive clothes anymore or go on the piss massively you now it's all about balance.

The best way is get your income above your interest in spending money. I buy everything I want and I end up saving money because I earn more than I spend. It helps that I am not that interested in consumer goods, but I can't think of a better way to save money :)

My strategy:* use mint.com for budgeting and expense tracking.* a budget line item is "savings".* set up an automated transfer from my direct deposit checking account to my savings account. * fire and forget.

When I get to work, I try to get any distractions out of the way before I start actually working; email, rss feeds, project management, etc. This allows me to focus on the important things throughout the day and not worry about if I missed something that happened.

Since I get the distractions out of the way in the morning, I will know what I'm working on throughout the day and not have to change gears unless something urgent comes up.

It's not really along the lines of IDE, tools, etc., but one thing that's been helpful for me is to bounce ideas off of someone, even if you're trying to remember something, and the act of explaining or working through my thought processes helps me pieces together "mental puzzles". This is also known as rubber duck debugging.

I've had multiple instances of talking to a coworker about a topic, and halfway through the topic I realize what I was going for and cut it off, saying, "I got it! Thanks for being my rubber duck."

I like to do exploratory coding in an interactive shell, then when I've accomplished something, save the readline history to a file and refactor it into a reusable module with tests. This works in both Ruby and Python.

Over the years I've developed a pretty good sense for when I've gone too far down a dead end. Some people try and dig their way out, I prefer to just turn around. It helps when you delay the design stage as much as possible. Makes it easier to let bad ideas go.

1) Spend significant time understanding "why", not just "how and what" things are going on in your local problem, and also do the same at least 2-3 layers above and below you in the stack. You should be able to walk away from any significant piece of work with functional expertise in at least two domains related to your local problem.

2) Carve out the time and space to make 3-5 variations of a unit of work before considering it minimally complete for iterating and building upon.

3) Pay really close attention to feelings of pain and/or drudgery when implementing something. Very often those are signals your design and separation of concerns are wrong, because you're fighting uphill against your problem space.

When the code is something tedious, I keep a physical timer on my desk and timebox a working solution to 1020 minutes, then (as long as it works), I move on after that. No need for perfection with everything.

Among the reasons not to do Ycombinator would be a desire for a business that isn't built on the startup model, where "startup" is used in the specific sense it's used among Venture Capitalists and not the more generic sense of "new business".

Some people want a business that lets them focus performing the service rather than running the business, e.g. a consultancy, a workshop, etc. A chef might open a restaurant so that they can create a menu and stand in front of a stove and talk to diners enjoying the work of their hands. That's different from opening a restaurant in hopes of franchising it so as to become a restaurant industry executive.

Well the right question is why would one pick a different incubator over YC. There's a multitude of great reasons for not going with an incubator at all. Or going with an angel that you really love.I'm sure some might pick NYU over Columbia but it's rather rare. I doubt there's many that turn down YC for another incubator. When they do the reasons are probably pretty specific to the company's/founders' situation.

Well incubators are really cool for a younger person with no family and kind of not good for older people with houses and families. I would be interested in hearing about anyone 35+ with a family and house who made YC work.

So that would be my guess on a large segment of the population that dont persue incubators. And if you dont apply obviously you wont have an offer to accept or reject.

Any incubator or accelerator being the right fit is really dependent on the company.

None are right for every company, and as you may know, incubators and early stage accelerators have exploded in growth over the past couple years (there are so many now, and not all are worth your time).

Vetting that any one has worthwhile resources for you is important. Mainly you're thinking of longterm benefits like the network they provide and not shorter term ones like how much cash they exchange for 310% of your company.

The best way to get advice about any accelerator is to talk to founders who have already gone through it about their experience. You can easily find YC companies and early- to mid-stage founders are more likely to reply to your emails. Though a referral from a mutual connection would be best, you can reach any YC co with the founders@ email.

By the way -- this advice is about improving your odds in applying to YC, once you're at the offer stage it's a different question. I don't know many founders that would turn down the YC offer after being accepted.

It's good for young people same as college. The value is in credentialing (and notch in belt confidence building). You learn most professional lessons while doing your job which has little to nothing to do with YC per se.

I think a resume with Ruby, Python and soon PHP it will see very little resistance on the job market. Like the universe, programming languages burn really hot for a while then, depending how hot it burned, they cool off very slowly. Sometimes even reigniting. God I love metaphors. My thoughts are, don't see it as a step down or back, see it as a widen field of vision. Cultured, season devs are hotter than any language will ever be. Also, never settle.

I'd wonder why they're pressuring you to move to PHP. I've written PHP in the past, and recently started maintaining a site in PHP through a company acquisition. Normally I prefer Ruby on Rails and have used it since Rails v1.2.3. I consider PHP to be a step backwards technology and tooling wise. Laravel seems like the nicest copy of Rails, but it seems like everything nice in PHP is a crude copy of something from the Ruby/Rails ecosystems.

Frequently in PHP I found myself missing a proper REPL, yes PHP can be run interactively with `$ php -a`, but it doesn't print the last returned value, so spelunking in a running system is slow and awkward, luckily I've found Boris(https://github.com/borisrepl/boris) which is more like IRB or Pry, but it's still unpleasant when I'm trying to kill a tricky bug. On the package management front Composer is a better solution than previous PHP offerings, but it's got some quirks that make it seem unpolished compared to Bundler.

If I was given a choice PHP I would never willingly pick PHP. I suspect your company is pressuring you to move because they think they can get PHP devs at a lower cost than Ruby devs. If you're in the Bay Area there are plenty of companies that will hire you to write Ruby so you don't really have to switch if you're not comfortable with it.

There is nothing wrong with Php, I would think that if your worried about companies looking at your resume I think they would be concerned more about the project you wrote than the language it was written in.

To add to this comment, Solving problems is more important than the language you implement the solution in. You can write good Php code and the same goes for any other language. At the end of the day the result is what matters. I personally think your putting to much emphasis on the language.

Career wise, no. Learning wise, yes, its a step backwards. PHP has nothing new to offer.

If you want to stick to api/backend dev, pick up node, its "async everything" mindset is very hard to turn back from once you become accustomed to it. One big benefit of this would be getting good at javascript, which can help you become a proper full stack dev(browser, and mobile with react-native).

If you want to explore systems programming, or high perf computation, golang is a good option.

Or switch to a completely new area of programming, like data science, where python has a stronghold for now.

If you're not dramatically excited to code in PHP, don't do it. I'm not comparing PHP vs Ruby/RoR vs some other tech stack, it's just that there are quite many new exciting technologies that might be a better choice. I've seen it many times developers leaving companies because they didn't find satisfying companies' new technology choices.

Anecdotally, I've been applying to a ton of jobs over the past 2 years. PHP compensation is much lower than Ruby by my observations. However, having multiple languages opens you to a wider market. I'll see "senior PHP developer" jobs that are trying to pay $40k-60k. Where those senior roles in a Ruby/RoR shop are almost always six figures.

Someone told me something 20 years ago, "adapt or get left behind" and I think that applies here.

You need to adapt to the changing technologies, even if they aren't as awesome to you personally. Why pigeon-hole yourself? I'd rather hire someone that is adaptable without stubbornness for technology (and usually an ego).

PHP used to be royal crap, but it has a ton of good stuff in it now-a-days, at least feature and performance-wise.

Being adaptable and open to learning more about programming languages will be much better for a career. Are you a programmer or not? Do you love programming or do you love a specific language only? Overcoming challenges and implementing business needs is one of the best things ever!

PHP is a perfectly valid language. If your entire team is working in PHP, consider moving to PHP as well. There's nothing making it better or worse than RoR (well, maybe a few things that are slightly nasty), and having experience with another language and it's quirks is going to be quite valuable in the future.

PHP developer here. Highly recommend Laravel if you have a choice. It's basically PHP On Rails.

Also, as someone who has been writing PHP for what many would consider too long, I can safely say that there's always tons of work to be done. Not all of it is pretty, but it pays the bills, and there's a lot of really interesting organizations out there that you can work for.

You have the opportunity to get paid to learn another language. Give it a go, if you don't like it look for something else and by that time you'll have proof that you can pick up new (not 'recent') languages quickly.

> but I have a batch file I run after every Windows update to get rid of the spyware stuff so that isn't an issue.

Could be that over time whatever your batch script is doing is possibly interfering with the correct operation of OneDrive. You might need to review whatever it's disabling/hacking and make some adjustments. I doubt Microsoft are deliberately trying to sabotage your machine. I suspect whatever your script does is probably not documented well, or is doing "not-recommended" things that may be trampling over incremental updates to OneDrive and unexpectedly and subtly clobbering the way it functions and/or the things it expects to be there. There can be some surprising dependencies in Windows, and Windows does evolve over time due to patches and fixes.

Who knows, but at the end of the day, they are only going to have so much resources to deal with older versions of Windows.

They seem to be operating with an attitude that if they can get as many people as possible to use their newest version of windows, that they will save money by not having to deal with such a diverse environment of versions.

Something tells me they looked at the way companies like google release their updates often, and by default. Release numbers are becoming less important, more of a tool for developers to use (which is what version numbers were invented for, before marketroids don't got a hold of them). Perhaps a light went on when they saw that chrome just quietly updated, without any fanfare about 'upgrading' to new whole numbers, large features just got included when they were ready, from whichever version they were releasing at the time.

This approach makes alot of sense ongoing, and in the long term. Developers in the past got used to having various versions of their desktop software being in the wild, and it was a part of life. Then people started going, hey with the web, I only need to be supporing one version of our codebase, which is actually pretty awesome. Google came along with chrome and decided that it made sense to have as few versions in the wild as possible. It seems Microsoft is playing catchup with this, but they still have large releases of windows, with interface changes between large versions, which causes folks like you to want to hold onto older versions. Seems they are still working on fine tuning their social engineering.

I can be programming something in Visual Studio on my desktop and then an hour later I decide to use my laptop and it hasn't syncd

It sounds like you are looking for an almost live real-time sync. It's not really a use case I think OneDrive has ever prioritized. Certainly it tries its best, but I remember having a lot of issues with the timeliness of OneDrive sync in Windows 8. (It feels like sync has gotten better in 10's client, even with the two steps back in usability.)

I don't think they are intentionally sabotaging it; I would suspect it's more that you've found edge cases in the sync platform.

That said, you may want to consider a different sync platform intended for closer to real-time sync. BitTorrent Sync has been useful to me in that category.

I'd say you are seeing development tradeoff's that they are having to make. Likely code bases, like the one for OneDrive sync, is shared across multiple versions of Windows. That comes with tradeoffs though as newer versions of Windows might have features which are utilized to gain functionality, security or reliability. Then to support the older OS's the team tries to implement similar limited functionality but it isn't as thoroughly tested as the OS likely. Not to mention, think of it this way, if say 70% of your clients are on Windows 10, you'll probably optimize testing and features around that, not anything prior.

I highly doubt this is done specifically to force people to upgrade, or to screw their older versions of Windows. And I am sure more then once a developer or product manage has said, well if they don't like that they can upgrade Windows. If you have ever written a client deployed application you have likely said it too.

They may are just shitty devs as always, maybe thats their tactic. Who knows. Just upgrade to Windows 10, thats what Microsoft wants you to do, and you know yourself you want all that Spyware stuff, else you would not title yourself windows dev.

Serious question: what's the problem with rsum gaps? Is it a big deal in USA? I'd say that in Europe it's not such a big deal. Nobody is going to ask you why you have, for instance, a 4 month gap in your rsum if you have been working 3 or 4 years in a row. Almost everyone would guess that you took that time off, and that's not a bad thing precisely. Perhaps you took that time to learn new skills, to read a ton of books, to travel around the world, to be with your kids,... a lot of activities that do more good than harm. Most of us are going to work until we are 60 or so, so what's the big deal with having a few months every 5 years or so in our rsum? They give you a medal if you finish your career without gaps?

Imagine this scenario: developer A has been working in a time span of 10 years without rsum gaps. Developer B has been working for 9 years and has been taking gaps of 4 months every 3 years. Do you really think there is going to be a big difference between the two developers in terms of skills set? 10, 9, 8 years, it doesn't make a difference at all in terms of accumulated knowledge. But developer B has been doing "something else" during a whole year (3 gaps of 4months each). Maybe he travelled the world and learned a little bit of a couple of languages, and I'd say that's a valuable non-technical skill to have.

As I've said, I see more good than harm in taking a few month off from time to time.

Going back to your question: if it's just for a few months I see no problem at all, and if recruiters ask then just explain what you have post.

Yep, absolutely fine. If anyone asks, just tell them the truth, you moved, left one company and are learning the new market and who's there.

My only comment, if you let a few months turn into 5-6+ months, you may want to explain up front versus them seeing a 6 month gap as you may not get in the door for a competitive position. You can do this in your intro email/cover letter, mention that you recently moved to the city, took some time to vacation and get to know the city a little and recently saw their position advertised and felt it might be a good match. Or something along those lines.

Yes, some companies will have filters for things like "hasn't worked in X months => automatic dismiss pile", but by and large, I've found that it depends how that gap fits in with the rest of your life/work story.

They'll wonder about the following Was that gap after 3 months working somewhere? Was it after 5 years? What caused it? Boredom? Familial reasons? Illness?With a tight narrative (e.g. reasonable explanations and a human story), you'll be fine. The person(s) on the other end are also human beings, and most recognize that life happens. It's okay.

I have two (5+ month) gaps in my resume; one was so that I could party, the other was so that I could work on a personal project (that would definitely not make money). When people ask what I did during those breaks I tell them 'personal time' and that I wanted to explore a personal project in more detail (respectively). I do not seem to be any less employable.

I had a friend who was looking for Administrative Assistant roles with a 2 year gap on her resume and it was a problem. The companies could always find a younger person to sit in the chair and do the menial tasks, and somebody with no gaps is more likely to stay put. They also marked her down in interviews for not knowing the latest Excel version (even though she knew Excel and had been using it for years, like anything significant had changed in a year). So jobs like that are kind of shitty to applicants.

But you as a programmer? I cannot imagine it being a problem. You are a high-skill worker who earns enough that you can easily afford to take the time off. Just say you were exploring personal projects in your spare time. That sounds awesome.

An asterisk on your CV time line will suffice: * Transferred to New City with my spouse. Took some personal garden leave during the transition.

Should anyone probe further, tell them ... I'm not a job-hopper, I've been very selective on my search looking for a good company match. Things that are important to me are the quality of the people, interesting work problems to solve, and obviously a good compensation package.

As someone with gaps in my resume for various reasons, I have found a range of responses by potential employers.

I have worked in two different career fields. When I made that switch, getting the professional certifications took me about 3 months, during which time I was not working. Almost nobody asks about the gap, though almost everyone asks about the career switch.

I have a several year period in which I was working only contract employment. There are gaps of up to 5 months between contracts. Most employers ask something about that time, and most are satisfied with the simple explanation that finding a new contract took that much time.

Some employers care more than others. IBM required me to write a letter of explanation for every gap of 3 months or more. Some employers don't even ask.

I wouldn't worry about it too much. Any chance you can obtain a contract position or freelance work during that time so you can just list it as contract position/work.

But I really wouldn't worry about a small gap especially when moving to a new city.

Once you know you're leaving and getting ready to turn in your notice you could ask HR if you could take unpaid leave so your last official day is a few months out, not sure this is possible but if you're worried about your last official day of employment or a gap it might be worth asking.

I think I've only had one company contact my previous companies HR to verify my dates of employment. And one of my former companies HR staff called to let me know about it and see if it was ok to give them information and say they weren't even sure they can legally call up and ask for employee information like that.

Yes it's fine. You could take advantage of these few months to do something, like volunteering, OOS contributions, mentorship, etc to make it even "more okay". But your scenario is valid explanation enough.

Having gaps on your resume isn't a big deal. If you're good at what you do you shouldn't have any problems. I have two 6 month gaps on my resume and it wasn't any problem getting my current job as a DevOps engineer. It can be a smart move taking your time to find the right thing. The last thing you want is to end up working somewhere just so you can have a paycheck.

This is anecdotal -- but it seems like companies are more or less pretty understanding if your reason is justifiable. I had a string of jobs (fulltime, then laid off, then consulting for 3 separate clients). I interviewed with over 20 companies this year and no one had a problem with the gaps in my resume. They were more interested (concerned?) about why I had worked with so many companies.

I can definitely comment here. I was also in the same boat a few years ago. I was a US Army Officer for 5 years, and now I'm a senior research engineer. First, here are my observations after getting "into" the tech industry:1) I've observed I have a huge amount of leadership experience compared to my peers. This doesn't mean I run in commanding, no..it means I know how to get people to do things that need to be done. I can motivate people, align their viewpoints...which means I can change my view if needed.2) You're going to be far ahead of your peers on things like organization, work ethic, world view, etc.3) I've found it useful not to talk about my military experience. I will occasionally, but seems to be what people focus on if you do...and this isn't generally what you want.

As far as operations, you should be golden. I can't count how many times I've used the same skills I'd use to plan an operation to plan projects. They're exactly the same skill sets, just different semantics and new acronyms to learn. You might contact student veterans of america. Even if you're not a student, they usually have "tech" resume workshops that can help you translate for the civilian audience.

Tech industry treats veterans the same as non ex-military. Just insure that you have the technical knowledge and background for the job. If you do not, government contractors will gladly bring you on to teach you, especially if it is something that helps maintain your security clearance. They will normally put you in a journeyman position if you have zero experience in a certain technology sitting right with experts in the technology.

With enough time on the job and at home teaching yourself you will be at the junior level in no time. Once your able to do all your regular tasks along with more advanced projects you may be able to start working in a senior role and be handsomely compensated for it.

Now if you have heavier military only skills government contractors more then likely still have a place for you, I would recommend checking the top government contractor job sites. They can normally place you in something very similar to what you were doing in the military with the added benefit of you learning new tech and some times becoming the expert on that tech, especially if it is very popular in the tech industry.

If you want to use many of the benefits that come with joining the military long term you may want to check out jobs at the intelligence agencies (CIA, NSA, NGA, DIA, etc.) or usajobs.gov to see if there is anything there you like. You may also be able to get a higher paying ranked job based on your military experience.

Do not forget to also take a look at the agencies like FDIC, SEC, Patent and Trade office too. They are smaller but pay better and offer more benefits than many of the larger agencies for tech talent.

I was the same as you, got out with no college, and got a job as a Jr Unix Systems Administrator. That being said, I had a lot of Unix/Linux knowledge already from personal study. I worked my way up to a Sr Systems Admin, but wanted to build things and couldn't do that without teaching myself to code.

I'm now a Software Engineer for one of the larger financial firms in Chicago. I never went to college and am self-taught. Every firm that sees "military" treats it the same as a degree aka:

Requirements: batchelors degree or "equivalent experience".

Work hard, and you'll be fine. Tech has no issues with vets at all from what I can tell. What in specific were you looking to go into?

Probably better to connect with veterans who've already been down your path.

Jump on Linkedin's advanced search feature. Sort for profiles of local individuals in software/hardware with past military backgrounds. Reach out to them, ask for advice. They'll likely have some solid ideas and thoughts on opportunities.

It depends on the company to be quite honest. You should look up Operation Code (http://operationcode.org). Full disclosure: I'm a Founding Board Member. If you have questions my email is in my profile.

I've worked in finance technology for eight years now, in various domains.

As a broad generalization, if you are latency bound (milliseconds or less) then everything is done in code and the DB is never in the main loop.

At the other end, if you are throughput bound - think end of day/month activities - then stored procedures all the way.

For everything in between, prefer to have the logic in code due to the maintenance benefits that come with it.

> Do you have an API on top of DB that enforces the rules?

In general, a database is owned by the app it is associated with and the app mediates all access to that data. The usual enterprise integration patterns (esb, messaging, web services, file dumps) are used to share data with other systems.

> Is the security/data validation also done in the API/app layer?

Largely yes. There's some level of security (like app access control and encryption at rest) that's handled in the DB tier but authorization is largely an app level concern.

Similarly, some constraints are imposed in the DB schema but those are quite basic. Most validation is done in the app tier.

Although every project is different, as a general rule I prefer to use stored procedures to make changes to the data. The SPs are written to ensure data integrity. Of course, there are some very basic business rules evident at this level but the primary concern is the correctness of data as updated/inserted. I would characterise these as the "data integrity rules".

Each SP encompasses a document, a test suite and the implementation. It goes through the DEV-TEST-UAT-PROD QA - promotion stepwise deployment. I see that as a reasonable substitute for continuous integration.

The OO layer implements business rules. (The SPs are transactional/procedural). I consider the BRs as a lower level business logic. Then the application provides the high level business logic, e.g. validation, workflow, etc.

In reference to your question, I generally end up with three layers, DB, BR (API), BL (app). Technically the DB also has an API, but that is only visible to the BR layer.

Most hardcore finance shops (quants, hedge funds, algo traders) I know don't use a DB in the traditional SQL RDBMS sense. Proprietary time-series databases rule here - because microseconds count, it's very important to think about the access patterns of your data and optimize for the algorithms you're actually running.

Having written a number of shells, I can confidentally say that the actual heart of one is the ability to execute a series of commands.

Doing this in a very high level language like Ruby is trivial; it does all the work for you.

Doing this in C, as Bash does, requires learning some systems programming. Under Unix/Linux that means using fork() to create a child process and then having that child call exec() to run some specified command.

If not run "in the background", then the parent process needs to call some variant of wait() to idle until the child is done.

If it is desired to have input and/or output different than the parent, say for redirection of stdin/stdout/stderr, then one has to fiddle with variants of dup() to arrange this.

In some sense, all of the features mentioned in the other comments are optional, and the number of features in a sophisticated shell like Bash is mindboggling, so it would be a good idea to figure out a "minimum viable product" so that you can get your minimal desired feature set working before the end of time.

The first thing to recognise is that is shell is not a special kind of program. It's just a normal executable like everything else.

Next, recognise that a shell is a language, so you're basically building a commandline programming language interpreter (like python and ruby offer). The difference compared to a general-purpose language is that a shell language traditionally has super-lightweight syntax for operations related to processes and files.

The first step of building a language interpreter is being able to lex (tokenize) and parse a stream of characters.

- expand wild card characters (for UNIX shells. A in some sense more reasonable alternative is to put wildcard expansion in a separate library and let executables do wildcard expansion. That would prevent problems with expanded command lines becoming too long)

- allow for back tick substitutions

- evaluate environment variables when interpreting arguments (again, this _could_ be something left to programs to do. For this, I don't see a benefit, though)

- allow multiple commands on a line

- allow redirection from and to files

- build pipelines and execute them

- has some builtins (mostly optional, to speed up things)

- reading and interpreting .shellrc

- control structures (if, for, etc.)

You can implement them in whatever order you want.

I would probably start like this:

- a program that starts a single executable.

- starting an executable and intercepting its output.

- also sending it input

- accept the name of the command to run on the command line, search for it, and execute it.

- allow sending arguments to the program to run

- loop infinitely, running the executables whose names the user types in (this is where your program becomes shell-like)

You will likely encounter many things I let out above (do you need to interact with the terminal? How to handle Control-C, for example to nicely kill all commands in a pipeline) or do not even know about, but I would tackle them when I met them.

Privacy Laws. In some countries (eg the whole EU) privacy laws about data are VERY strict and I don't think you can force them with just a license. To make an example here you must identify in a sort-of-contract who are the people who manage (in any way) the data, for which explicit purpose and for how much time. Also you have to give a way to delete it in a permanent way. And typically you cannot share that data with third parties not explicitly know at the moment in which you write the contract and the user accept it (you can't be vague, they must be people with name/surname/etc or companies).

So consider that, in most cases, your program cannot be used if there is even a single data relatable to privacy laws that it gathers (and again, here in EU even temporary geolocation is considered covered by privacy).

Depends on the meaning of free you use. It would be incompatible with GPL, but compatible with many less restrictive ones like MIT/BSD. Of course you can write your own licence, but whether that's enforceable you'd have to talk to a lawyer. Details would likely matter there - how do the results have to be published, for how long, who to (it could conflict with local laws about not selling tech to country X for example), etc.

Of course there's still the question of who would care to follow the licence. Did you think about doing to in terms of incentives instead? For example a cheaper version which always (or opt-out) uploads the results and a considerably more expensive one which doesn't. If you're thinking about releasing it free with the source, how about official compiled package which publishes the result, but that you can compile yourself with that option turned off?

That's funny. I've used the original ITS Emacs, Zmacs (the Lisp Machine editor), MINCE, Coral Common Lisp's FRED, GNU Emacs, XEmacs, and probably a couple more Emacs clones I've forgotten, and I don't recall any of them having that behavior when searching forward. (They do leave the cursor at the beginning of the match when searching backward.)

Anyway, you can get Aquamacs and customize its behavior to your liking.

The way people write "Science" capitalising the first letter, and says things like "one day Science will solve these problems for us", sound a lot like putting faith in a religion to me. What is religion but philosophy mixed with some faith?

Not to be a dick, but just man/woman up. Tell him/her that sorry, I just don't think we'd make good partners right now and (if true) I'd rather preserve our friendship. If it is true tell them the friendship is more important then a business that may or may not make it, and frankly you don't think the two of you would make a successful business together right now.

If they don't grasp that they are a pretty fair weather friend to begin with so don't loose sleep and get your business moving.

One of the biggest reason my startup failed was I included friends who didn't bring value. We kept in the group because he was a good friend, when it came to delivery, he was bad.

Once the business started to fail, we started to fight between each other. We lost our friendship and the business. If I could go back in time, I would have had this chat with him.

On the other side, I talked to a friend of mine who is running a successful business in Toronto. He started his business when I was his room mate in university. I was very bitter that he didn't include me as his business partner. His answers were that I didn't bring value to his business. I am glad he did that, because we are still friends and he is willing to help me with whatever business I start in the future.

I might say, "I don't think I can do a startup with you and still maintain our friendship. And I'd rather be your friend." (Without telling him/her why you can't do a startup and still be their friend...)

When a friend wants to start a business with me, I just tell them my rule:

I don't work with friends, and I don't make friends at work. I keep those two areas of my life completely separate.

The benefits are: you can make whatever business-decisions are prudent without worrying about upsetting a friendship, and you can make whatever friendship decisions you want without worrying about how it effects your business.

I've had this problem with my family. I own a brick & mortar business with my brother, and I am a developer. I built a side-project that he was part of and he failed to do his part, and it is just sitting, stagnating at this point.

He has more ideas he wants to pursue and I'm unwilling, due to his role in the first.

But because I have an ongoing partnership in the b&m business, it's hard to be fully forthcoming about not wanting to work with him.

My situation is different in that I'm not going ahead with the idea without him. Mostly I've just put off working with him again and he hasn't been too persistent about getting started on anything.

Even still, if I were faced with the conversation of "why don't you want me to be a part of this?," I would tell him exactly why. He wasn't a good co-founder in the past, I don't expect he will be this time either, and I'm not prepared to risk another business on him.

I would tell your "good friend" that you don't enjoy working with him, even though you like him, and that you won't be including him.

If you're going to have a policy, I would caution against having one that requires a case-by-case evaluation. That will not scale well and can lead some to allege bias.

As an example of a reasonble, scalable policy: Salesforce used to (and still might) offer any 501(c)3 non-profit organization 10 free licenses. The IRS makes a judgment call when issuing or renewing 501(c)3 status, and you can save yourself some time by relying on their evaluation. If an organization is big enough to require more than a small number of licenses, then they're big enough to pay for them.

I used to work for a digital agency that specialized in working with non-profits.

It's perfectly acceptable to charge non-profits for services, and non-profits expect to be charged. Getting free services and products is often a great way to get crap. Non-profits have budgets, and they're willing to spend them to achieve their goals.

It might be effective to offer discounts or limited free functionality to non-profits, but you should probably view this as a marketing strategy more than as a moral pursuit.

Set up a policy and not a case by case evaluation as giaour pointed out.

Personally, differentiate between charity and non-profit. All charities are nonprofits but not all nonprofits are charities. I'd give a significant discount to charities upon proof of status, say 50% off, but not necessarily for non-profits. Think of it this way, your Home/Condo Owners Association is likely a non-profit, so are a number of exclusive country clubs etc, but they are not charities and shouldn't be seen as equal.

Also, having been an exec at a Charity, make sure you also talk to your own accountant as if you follow a set policy like this, and validate proof of status (annually) I believe you are entitled to some tax benefits as well.

They may be Non-Profit but you are probably not. If you really like their cause, you can offer them a small discount. I don't usually know if my subscriber is non-profit but when they do mention it, i happily say that we offer a <insert random> percent discount and give it to them.

Don't bother checking if they really use your service for non-profit. Check if they are abiding by your TOS and that's it.

I dont see why non profits should be free. Isnt even FIFA a non profit on paper? If it fits your company i would just mention somewhere that you offer discounts for non profits and decide from case to case.

Not for profit organizations are not inherently more moral than for profit entities. They aren't inherently better run. They aren't inherently doing a better job of serving the greater good.

Some sorts of services work better under certain organization models than others, eg it is best to have a government run or volunteer or not for profit fire department that automatically responds to all fires, regardless of ability to pay. That simply works better than a for pay model because if you do not put out your neighbor's fire because they are poor and cannot pay, the fire can soon become your problem and, at that point, it can be a bigger problem that is harder to solve.

But that does not mean that a non profit model is inherently superior in all cases. Business done right is a force for good. It is a civilizing, peace promoting force. And, sometimes, NPOs are all kinds of fucked up and were created for all the wrong reasons.

For a long time, I used to give out free Twiddla licenses to students and teachers. It generated a ton of good word of mouth referrals and established it as something that people use in the classroom. Now that I'm charging again for those licenses, I sell quite a bit more because of that positioning.

I occasionally get non-profits asking for free licenses too, and I always say no. There is no upside like there was with .edu, so it just amounts to giving things away for free.

A non-profit is an organization with a budget that they can spend on things like software. Your software has a price, so they get to pay it. Tell them as much and they will understand.

I don't get enough people asking for discounts to matter, but I usually give a discount to anyone who asks.

I do this a bit as a pay-it-forward thing. When I was in college, Github was offering their lowest plan (which included a few private repos) for free for educational use, if you emailed them. Well, I reached out to them, they gave me the free account without any verification. I had the account well past my time in school, though I lost it sometime in the last few years.

Unfortunately, most non-profits are notorious for money-laundering and illegal activity. I believe you should consider waving fees on a case-by-case basis, if you can spend money to evaluate, but if you can't, I'd err on the side of caution and not waive fees.

Im trying, is a service for acounting people we get data from the local IRS then we use machine learning to predict the best way to classify it and type it again on the original system but already classified.

simplify user analysis, engagement, retention and supportWe are a product development company which has worked on several projects in the last 5 years. We have built both internal products and helped other entrepreneurs with their prototype and MVP development. Even though these projects varied across industries and geographies, the one common pain we noticed was with user interaction, engagement and support tools and the lack of integration. Hence we decided to build one ourselves.

Our goal is to build a product which allows web and mobile app builders to communicate with their users in a seamless way across different channels and for different purposes. We hope that through this vision we can help you understand your users, communicate with them more effectively and retain them for a longer time.

If I were remote, focused on family, and somewhat price conscious, first choice would be San Louis Obispo: beaches, nice downtown, college town. My next choices would be San Diego (north of La Jolla) or Santa Barbara. If you are less price conscious and want to move north, then Half Moon Bay or Santa Cruz. Can find more remote places too that are amazing if you want that, like the Big Sur area or north of the Bay Area. Tend to like the places mentioned more than Carlsbad or Ventura, but those places arent bad by any stretch.

Been to Costa Rica, its nice, but more expensive than people think and issues with crime, like dont ever leave your house unattended. Brother goes to Nicaragua to surf a lot, sounds like Costa Rica but cheaper and less stable. Mexico still feels too dangerous to me. About three months ago our nanny was scared to go home because of the crime. When I was in the military not too long ago, you needed a Generals approval to go. Some areas are probably good but doesnt strike me as family friendly, more like retirement and vacation compounds. No idea about Panama, but all sound like an adventure.

You asked in the right place. I recently spent the better part of ten years trying to find this place, for exactly the same reasons. Sadly, the short answer is that it doesn't exist.

Like you, I'm 100% remote, so my constraints were "Somewhere in the world, with pleasant living and good surf". Sounds easy right? The problem though is that they nearly always put the good surf right on the beach, so anywhere that also has pleasant living will have $5m houses to go with it.

California crosses itself off the list immediately. Santa Cruz has tiny run down houses for around a million dollars in the Pleasure Point area, walking distance to some really good surfing, but you need to at least double that if you want a house that isn't being sold as a teardown. Santa Barbara has good waves and possibly four houses within 30 miles that you can afford, but none down by Rincon where you want to be.

San Clemente could work. If you drive far enough up the hill from Trestles, the soulless, yardless, cheaply built houses eventually come down to $800k. Further north, you might find a house inland from one of the urban breaks for that price, provided you don't mind people shooting at your kids on occasion.

As to Parts South? I'd recommend you spend a good full season in Nicaragua or similar before you buy there. You'll learn a lot about the psyche of your typical Expat Surfer In Central America. Turns out he's kinda bitter, and not a very pleasant guy to spend your time with.

And the places where you'd buy your house tend to be of the "cleared farmland on the coast between fishing villages" variety, with gates at the road to ensure you never meet any locals and Fancy-yet-Sad houses overlooking the sea at prices that aren't really as cheap as you'd expect. It's unlikely that you'll actually find a nice piece of land next to the quaint fishing village with an undiscovered point break out front.

We spent several winters in places like that, and never found one that really felt like we could make it home.

One ray of hope might be Puerto Rico, in the West Rincon or Aguada area. Spend next winter there and see if you can deal with the combination of dusty cinder block houses on the coast with giant Walgreens/KFC strip malls on the outskirts of every little town. With a good architect and a well chosen plot of land, you could make it work there. A lot of people have, and the vibe is a lot more friendly than the Mexico crowd.

Surprised no one has mentioned the northern California coast. There are lots of little towns on the coast, of varying sizes. If you want something a bit more populated, there's Eureka.

I haven't lived in any of these places -- though my wife and I have enjoyed vacationing in Mendocino a few times -- so I can't offer an unqualified recommendation, but it certainly seems like they would be worth looking into.

San Luis Obispo is awesome as others have said, but it is about 10 miles from the beach. Ventura County is also good, but has been getting very expensive that last 10 years. Carpinteria would have been great 15 years ago, but prices have gone through the roof. This would be my short list: - Between Carlsbad and La Jolla - Cayucos/Morro Bay/Los Osos (all pretty close to each other; I prefer Los Osos because not many people know about it and thus not a lot of traffic on holidays and weekends) - Some of the lesser known towns between Monterrey and Santa Cruz - Fort Bragg/Mendocino area If you're ok with living 5/10/15 miles from the beach, housing gets much cheaper.

For starters, there won't be any easy algorithmic way to defines shades and tones of colours (shade is the term for mixing a colour with black, tone is mixing a colour with white) as the eyes perceive them all a bit too differently, so they will all require some hand tweaking.

When users can choose colours, try and keep any preselected colours neutral. Blacks, whites and greys. Sometimes a slight blue can be applied. Blue is universally the easiest/most agreeable colour.

For finding good color combos the major ways to go about it are to either pick color chords and tweak slightly, or to play with the hot/cold contrast.

Color chords means using 3 or 4 colours which are equidistant on the HSL wheel (90 or 120 degrees apart), you can then play with them a bit to see what you like.

Hot cold contrast just means that warm colors and cold colours always look good against each other. So red/orange/yellow against blue/violet.

Also worth noting that different colours have different weights. Yellow is perceptually bigger than purple. So if you have two equal sized dots, one yellow one purple, the yellow will appear larger.

You are approaching it too much like a programmer in my humble opinion.

Yes there is rules and guidelines, but before you can follow them you need a style , a feel , a culture .

You should get ( pay ) a graphic designer friend to come up with some food mockup of a single page. Work on it worth them or have them do a few iterations until you are really excited about it and both of you think "aha!"

Once you get that far your next challenge is to truly use this as a style guide and pivot off of it as you design the rest of the pages.

I have not seen any negative consequences of making project viewable on Github, rather the opposite where you missing out on opportunities to get noticed. I had the same thought last year when I started my first serious startup, we ended up not doing it which was a mistake because it made it so much more difficult to do later, because of shortcuts with secrets and Github issues, but in the end we did it later!

If you think about doing it, make no mistakes and just do it from the start!

If your primary laptop is a MBP, and then switching over to a Windows 10 tablet, there might be instances where you may get confused on how things work, as both features offered by the OS (Microsoft vs Apple) is very different.

But to stay the course of your question, the best Windows 10 tablet would be Surface Pro 4.

As someone who flagged one, because they were articles that clearly were simple direct breaking news articles of general interest with no hook for discussion beyond people's prejudices. They are important news articles, but not something that people are going to miss without HN and not something well suited to the kind of discussion HN exists to foster.

This is, of course, subjective, and people can disagree, but HN replies on subjective and largely community-driven moderation to maintain its character.

As for your example [1], I remember that there were dozens of articles about the same topic that were killed by flagging, because they were off-topic for the same reasons as the current story (TV news/politics/crime). You just happened to find one that slipped through the cracks.

One of the most impressive programmers I know is blind. So yes,it is possible.

Being dyslexic myself I can say some languages are easier for some people than others. For example I like java verbosity and camel case as it helps with my particular variety of reading problems. This frustrated me because I love python in its philosophy but I can't work in it.

My brother reads on average 0 to 1 book a year and he is a better code than me. I personally read about 50 books per year. There is nothing about programming that requires you to be a good reader. If you are an avid reader, you will get some more interesting ideas to make your life and work more fulfilling. If you study another language, you will find many similarities with the grammar structure of a "human" language and the grammar structure of most programming languages leading to much cleaner and more well formed code. As a programmer, as long as you can think clearly about your problem, understand your users, and have a good understanding of the documentation of the tools that you are using you should be fine. Reading more exposes us to ideas that we would usually never think of ourselves but in my personal experience there are few ideas that come through this way. Most things come to you the old fashion way -- trial and error. As long as you are persistent and dedicated to your craft you can become a good programmer regardless of where you start and how often you read.

It is also said that it is 10x more difficult to read code than to write it.

If you enjoy it, practice. Comment well.

If there is something you don't understand, rewrite, break it up into smaller pieces. it really takes a long time to understand things, considerable effort is most of the time required - but it gets easier as your skills improve.

For your own sake or for whomever might read code in the future. Keep it small, simple - It really helps!