Ask HN: Teach me remote for future hiring, good idea? - <AUTHOR>

Hello,
I would like to validate on an idea I have been wondering about.
I am extremely passionate about programming, web development (backend), smart financial and business applications and data analytics.
However, I do not have a CS mayor (I studied economics) and I do not have enough experience to apply for software development junior positions. Another problem is that I live in Europe in a city with no startup/IT culture. Around me I only see .NET developers and SAP consultants and no such things as Code Academy or HN meet ups. Also, I have limited time as I work full time in controlling/finance.
An example of position that would interest me: http://www.readyforzero.com/jobs/backend-engineer.
So, lately, I have been thinking that I could work for free on week ends and, if the potential employees mentors me, that I could learn enough in 2 or 3 months to be hired as a junior. I think I can learn so fast because I already know the basic concepts, I programmed in python and R to analyse pricing in a medium company and now I am building a small analytical tool in clojure.
I see this as a win win situation. The potential employer gets some free work and the chance to know deeply who he is hiring (if he decides to hire, of course), I get the chance to accelerate my programming learning and possibly relocate to a part of the world where people actually have a start up culture.
What do you think? Comments, advices? If you think this is a good idea, how would you go with implementation? Web site and post on HN? Other ways?
Thanks! <comment><USER2> I am not sure if people will be interested in hiring you for free. The reason is its not actually free. Once you join a firm even if its part time a certain amount of time and energy goes towards the employee too. And if you are working for free there is always a doubt in the commitment level you will have.

If learning is your primary motive, instead spend time coding and working on some simple projects. Lot of folks will recommend you to build your github profile. Build anything, it can be a webapp, an iphone app etc. Pick a technology that excites you, a field that you find interesting.

Once you have a small portfolio ready, try approaching firms you would like to work for.

All the best

<comment><AUTHOR> Me neither, that is why I am asking.

I am building my github profile (<https://github.com/kfk/proj00>, to polish a lot), but I noticed it is a slow process. When I can talk with people with knowledge, even for a short time, it boosts a lot my learning.

Maybe is more something like a mentor I should look for. Don't know.</comment></comment>


Iran blocks encrypted messaging apps amid nationwide protests - <AUTHOR> https://www.theverge.com/2018/1/2/16841292/iran-telegram-block-encryption-protest-google-signal <comment><USER2> Mesh networking apps get around this, and there are a few of those available now. Signal even has an offline mode that does this.</comment>


Scala Days Recap and Why the Free Monad Isn't Free - <AUTHOR> http://engineering.sharethrough.com/blog/2016/07/26/scala-days-recap/ <comment><USER2> In the Haskell community there was a period of time where free monads and their equivalents that had different performance characteristics were a fad. The buzz has passed but they remain a good tool if you ever need to evaluate your expressions using more than one interpretation. Really, that's all the free monad gives you: syntax without semantics. Your semantics come from the monad algebra you choose to reduce the expression. If you are only ever evaluating under one semantics, the free monad pattern is overkill.

<comment><USER3> Regular typeclasses can also give you just syntax w/ capabilities for different semantics; what free monads actually give you above typeclasses is a bit more subtle (i.e. even less).

<comment><USER4> Type class instance parameters must be explicit in Scala, whereas Haskell can usually infer them. That might make a free monad approach more interesting in Scala.

However, if you really want to introduce this complexity in Scala, you will probably first write some nice high-level code, then discover that it causes a stack overflow, then have to learn about the TailRec monad, figure out how to stack your (free-like) monad on top of it, therefore learn monad transformers, which you probably wanted to avoid by using a free-like monad. A library may solve part of the problem for you, but you will have to be aware of your own stack usage all the time. And when it works you should tune your JVM garbage collector for many (many) short-lived objects.

I would either keep it simple in Scala or choose a language that supports this kind of abstraction in a less painful way.

<comment><USER3> > Type class instance parameters must be explicit in Scala

In Scala, wouldn't this be solved with implicits? i.e. implicit 'instances' are in Singleton Objects that one simply brings into scope with an import.

<comment><USER4> In Scala, the implicit arguments are implicit, yes, but the parameter is not. You will have to declare the implicit parameter, even if you omit a type signature.

I think I forgot to mention the lack of type class coherence. That's also something you should be aware of when you start using type classes.

</comment></comment></comment></comment></comment><comment><USER5> Great post and excellent talk. Wish I saw a them couple of months earlier. Highly recommended to anyone getting into this kind of thing in scala</comment>


Introducing Citus Cloud - <AUTHOR> https://www.citusdata.com/blog/1773-craig-kerstiens/414-introducing-citus-cloud <comment><USER2> > Data durability

>

> As a data service our first priority is keeping your data safe. We utilize > WAL-E (link is external), the popular continuous archiving tool for > Postgres.

A slight aside, but it's definitely worth looking at Postgres' WAL system [1], which is very cool technology that recently got better in 9.4 in that it can stream a "logical" representation of the WAL instead of the previous format which was largely only good for internal use. The WAL-E project that persists WAL to S3 was originally started for Heroku Postgres, but is now in widespread use elsewhere including the new Citus initiative.

Anyway, I'm a little biased because this was bootstrapped by ex-colleagues, but I'm excited to see an alternative to Redshift (not necessarily the target competitor here, but one interesting technology that Citus could viably replace) that allows for more consistent query performance and has all the modern features of Postgres (i.e. as opposed to being permanently locked into 8.0.2 with Redshift).

[1] [http://www.postgresql.org/docs/current/static/wal- intro.html](http://www.postgresql.org/docs/current/static/wal-intro.html)

[2] [http://www.postgresql.org/docs/9.4/static/logicaldecoding- ex...](http://www.postgresql.org/docs/9.4/static/logicaldecoding- explanation.html)

[3] [https://github.com/wal-e/wal-e](https://github.com/wal-e/wal-e)

<comment><USER3> For on-site usage I'm pretty happy with pgbarman from 2ndQuadrant, no need for S3/Azure/Swift (base backups are archived daily to our off-site storage).

</comment></comment><comment><USER4> You guys really need to do this on GCP where there's zero Postgres competition.

Since GCP will be overtaking AWS in like 2-3 years (hah), good to get a head start now. ;)

<comment><AUTHOR> Thanks for the input, we're very much considering other infrastructure providers to run on. All input and requests for specific providers is helpful input for how we prioritize.

<comment><USER2> > Plans start at $1,800 a month, with the introductory plan including a total > of 48 GB of memory for your database (one primary node and two compute > nodes, each with 16 GB of RAM and two cores).

You may need something that's a little more cost accessible before it's widely useful ;)

<comment><USER5> +1

Or you may want to allow a one-click solution that I can deploy on my resources now and later seamlessly move to your hosted solution, when I need to scale.

</comment></comment></comment></comment><comment><USER6> Really excited about this launch.

Citus is starts on an unprecedented level. Postgres is some of the best software ever invented already, and the team is continuing the tradition of continuing to add the best features to the engine.

I'd pick Citus over (almost%) any NoSQL solution at this point. Great data guarantees while keeping decades of engineering, tooling and know how.

Then I'm biased having worked with them for years but the team behind Citus Cloud is awesome. They understand both Postgres and how to build and operate reliable services better than anyone out there.

Congrats on the launch, Citus!

% I'm using DynamoDB right now because I don't have big data needs. But I miss developing against Postgres dearly

</comment><comment><USER7> Since this is for olap (by the wording), meaning latency is not a big problem, why not just go on dedicated servers on hetzner/etc and lower the cost by , say, 3x (probably more)?

<comment><USER8> Because then you aren't on AWS. "Just going to Hetzner" means mostly losing everything else that AWS offers. You can still use some services externally, but the latency is higher and there are ingress/egress costs to contend with.

A reminder: AWS is not just a VM host. If you are using it this way, you are throwing away money. You use AWS to delegate big chunks of your infrastructure or systems to Amazon, thus saving on manpower (and thus, salaries). Hetzner is just a bare metal provider. Apples to oranges.

There are some sites on AWS who deal with staggering volumes of traffic that have tiny infrastructure or ops teams. _That_ is the main value proposition of AWS (and GCP and Azure), and why Citus is focusing on it.

<comment><USER7> ....... what else is citus using in this case for aws except the virtual- servers + s3 ?

Example, this is what algolia does (search engine, keep index in ram for 99% of users).

<comment><USER8> That's an implementation detail that doesn't get at the root of _why_ they are snuggling up to AWS. Their _customers_ aren't just using virtual servers + S3. _That_ is the important tidbit to grasp.

If I'm a customer that is using RDS, ElastiCache, S3, and who knows what else, I'm not just going to switch to Hetzner because I take on responsibility that I had previously delegated to AWS.

<comment><USER7> But the customer isn't switching. Hell, citus could even make the import themself (by having servers in aws to read from your s3 and push to their own servers in hetzner so you don't pay bandwidth prices). Just like people can use algora without leaving aws.

unrelated: Have you ever thought, that the bandwidth pricing on the clouds is fucking insane ?

</comment></comment></comment></comment></comment><comment><USER9> It's great to see a lot of the good DNA from the Heroku Postgres team reflected in this release. Congrats on the launch.

</comment><comment><USER10> Does Citus keeps it's performance over tables with tens of billions of records? Also, how fast it is for ad-hoc queries over data coming from streams (Kafka/Kinesis) that has not been cached?

<comment><USER11> Sumedh from Citus Data here.

> Does Citus keeps it's performance over tables with tens of billions of > records?

Citus essentially shards the data across machines, and queries these in parallel. You can thus scale out your cluster and CPU cores as you add more data and maintain performance.

> Also, how fast it is for ad-hoc queries over data coming from streams > (Kafka/Kinesis) that has not been cached?

By 'cached', do you mean OS or database caching in-memory? Query performance for on-disk data is as fast as you can get with regular PostgreSQL, since each data node is essentially a PostgreSQL node, and each shard a regular PostgreSQL table. Standard tuning like indexes and Postgres configuration parameters will apply here.

<comment><USER12> Not every query is parallelizable. Maintaining performance is a lie. An easy to grasp is example is computing a median. And I mean an exact median, not an approximation.

<comment><USER11> @Tharkun: You are right that not every query is immediately parallelizable. Distinct count's are another example. In some cases data can be re-partitioned so we can calculate exact values and push down computation in parallel. This may provide better performance than a single large table, so there are still benefits to it. Ultimately though there will be tradeoffs to moving to an entirely distributed environment, but depending on the use-case the value may offset those.

</comment></comment></comment></comment><comment><USER13> > If you're dealing with event or time series data—whether > user messages, > logs, web analytics, or connected device > events—scaling out to both store > and analyze terabytes of > data becomes trivial with Citus Cloud

Speaking of time series use cases. PostgreSQL uses 30 to 100 bytes per long/float tuple, depending on schema. It's hard to see how it can it be competitive with TSDBs that are often in the single byte digits these days?

<comment><USER14> Are you referring to something different than the double precision floating point on the types page [1]? Because according to the docs, it uses 8 bytes, in compliance with IEEE 754.

[1] [http://www.postgresql.org/docs/9.5/static/datatype- numeric.h...](http://www.postgresql.org/docs/9.5/static/datatype-numeric.html)

<comment><USER13> Table schema, with indexes disabled:

> CREATE TABLE SensorData ( Sensor INT NOT NULL, FOREIGN KEY (Sensor) > REFERENCES Sensors(Id), Humidity FLOAT, Precipitation FLOAT, Temperature > FLOAT, SampleTime TIMESTAMP(3) NOT NULL, PRIMARY KEY (Sensor, SampleTime) );

Size on disk 80MB after 2.5 mln inserts {sensor,temperature,humidity,precipitation}.

SELECT pg_size_pretty(pg_total_relation_size('"measurements"'))

<comment><USER14> 80MB * 1024 * 1024 / 2500000 rows = 33 bytes/row

Schema:

        Sensor: 4B
        Humidity: 4B
        Precipitation: 4B
        Temperature: 4B
        Timestamp: 8B
        Null fields bitmap: 1B (< 8 fields)

        Total: 4 * 4 + 8 + 1 = 24 Bytes.

Consider a few extra bytes per page for page headers, probably some row-level overhead I missed, and the size of the b-tree index created for your primary key, and that's about the size I'd expect, and without performance, precision, or some other losses, you're not going to see time series databases get much smaller for the same schemas.

<comment><USER13> It seems that float(p) with p undefined is treated as double. I need to double check my numbers. The storage test was done against 9.4 Indexes were turned off. Adding (Sensor, SampleTime DESC) index increases disk usage by 30%.

Not sure what you mean by precision or performance loss. TSDBs are way faster, I think it's a rather established fact because they're optimized for numeric array ingestion.

<comment><USER14> I'm not an expert on time series databases, but the main thing that I can imagine they do differently is data storage order. In SQL world, the physical order of the data is simply determined by the clustered index. If you were to want your data ordered by time, you'd make an index on a timestamp and cluster by that index [1].

Then if you want to get the most recent N entries, your SQL server is limited pretty much only by the disk read rate, because it's just reading pages in the order they're already stored physically on disk, rather than seeking based on a non-clustered index.

So that really just leaves the possibility of specialized caching or archiving logic as the primary benefit of a TSDB, as far as I can tell. To me, that's not likely worth the added complexity or maintenance costs until I'm processing a _lot_ of transactions.

For the most part, though, that's because I already have a _ton_ of SQL experience. And of course, I could be totally off-base, and I'd want to benchmark the two optimal solutions and see what the difference really is for a given use case.

[1] [http://www.postgresql.org/docs/9.5/static/sql- cluster.html](http://www.postgresql.org/docs/9.5/static/sql-cluster.html)

</comment></comment></comment></comment></comment></comment><comment><USER15> Database noob here: Could someone please explain why this is different from other approaches and why this is interesting? How does it compare to BigQuery on GCP or Elasticsearch? Are those even the right comparisons?

Is this interesting because they use Postgres?

<comment><USER7> Elasticsearch can't do very complex queries like postgresql can (probably needs something like spark?).

Elasticsearch can't grow tables, you need to create a new one index with more shards and transfer data.

BigQuery works only in column-store while citus works in column-store + row- store (column-stores don't support update/delete). You can mix row/column- store tables and query/join them together.

It is interesting because that it's latest postgres, example you can have Hyperloglog column-types, which ~none else offers.

It is available as open-source wich bigquery isn't (elastic is though).

</comment></comment><comment><USER16> Interesting because I was having a conversation with a colleague today complaining about other teams at work we depend on for Oracle services that can't do HA. Not sure if they don't know how, if they just don't think it wokrs, or if it's too pricey for them. But we have a vendor product that needs a DB and our users don't want any downtime. Curious if Citus can fill that gap in the HA space.

</comment><comment><USER17> Could someone compare this to Redshift? Seems like they solve similar problems...we use RS to monitor terabytes of time-series data.

<comment><AUTHOR> In some ways we're similar to Redshift in others we're very different. At the core we both have Postgres as a foundation, though Redshift's roots in Postgres are from some time ago. Citus works with the latest Postgres release and is an extension which doesn't fork the underlying database. Both us and Redshift work with large scale data, from there we diverge a bit.

Redshift very much focuses on data warehousing, so commonly large batch loads and then complex queries and analysis which run over a longer period of time minutes and up commonly.

Citus focuses more on real-time analytics. We support real-time ingest so you can insert directly into it, or of course bulk load as well. And then on a query side because we have high parallelism customers typically are doing more with real-time analytics, so queries that operate in the second or lower range. An example is CloudFlare, which is a customer, uses us to power the dashboard you see when you login as a user.

</comment></comment><comment><USER18> Would be cool if this included cstore_fdw as well ( [https://github.com/citusdata/cstore_fdw](https://github.com/citusdata/cstore_fdw) ).

<comment><AUTHOR> At this point during the beta we're not supporting cstore, but it's definitely on our roadmap for the future.

</comment></comment><comment><USER19> I'm still waiting for a Database as a Service that has RethinkDB that also has a free-tier/freemium model and not insanely expensive.

<comment><USER20> Compose ([http://compose.io](http://compose.io)) offers RethinkDB, and doesn't look too expensive, but no free tier :-(.

</comment></comment><comment><USER21> Kick ass team. They will surely nail it.

</comment><comment><USER22> Any benchmarks against Presto?

</comment><comment><USER23> citrus cloud?</comment>


Let's Encrypt Enters Public Beta - <AUTHOR> https://www.eff.org/deeplinks/2015/12/lets-encrypt-enters-public-beta <comment><USER2> I'm disappointed that they don't support wildcard domains.</comment>


Drinking alcohol every day cuts risk of heart disease in men by more than third - <AUTHOR> http://news.bbc.co.uk/2/hi/health/8367141.stm

<comment><USER2>
      A) The Japanese eat very little fat and suffer fewer heart
         attacks than the British or Americans.
      B) On the other hand, the French eat a lot of fat and also
         suffer fewer heart attacks than the British or
         Americans.
      C) The Japanese drink very little red wine and suffer fewer
         heart attacks than the British or Americans.
      D) The Italians drink excessive amounts of red wine, and
         also suffer fewer heart attacks than the British or
         Americans
      E) Conclusion: Eat & drink what you like. It's speaking
         English that kills you. - Author Unknown

<comment><USER3> I do love that joke. But it's not un-worthwhile to note that the Japanese drink like they're training for the Drunken Olympics.

</comment></comment><comment><USER4> It's also important to note:

" _The study was conducted in Spain, a country with relatively high rates of alcohol consumption and low rates of coronary heart disease._ "

<comment><USER5> There are likely other contributors to this than just alcohol. The lifestyle in Spain is probably a lot more laid back. And they have a lot more social interaction.

<comment><USER6> So it's good that they had the control group in Spain, too.

</comment></comment></comment><comment><USER7> Two great books, both by an engineer out of the UK.

        The Epidemiologists: Have They Got Scares for You!
        Sorry, Wrong Number!: The Abuse of Measurement

The shenanigans that go on with the data, just to get an interesting result ... and thus a published paper, are disturbingly like the GW fiasco. These books definitely make you read these "Eating X helps with disease Y" kinds of headlines with a jaded eye.

That said, I think in this instance, the fact that alcohol thins the blood, (which many drugs prescribed to people at risk of heart disease also do) lends credence that there is causation here.

</comment><comment><USER8> However, it probably increases risks of liver disease by more than a third.

</comment><comment><USER9> this type of study should be headlined thusly: strong correlation found between alcohol consumption and decreased risk of heart disease. but I'm not naive enough to not understand why science has been sensationalized with inaccurate headlines for centuries.

<comment><USER10> Correlation -- yes! Though it would be better to say "inverse correlation found between alcohol and CHD".

Many people don't get that this observation is entirely consistent with alcohol's _increasing_ the risk of CHD.

An analogy is that car accidents correlate strongly with use of the brake pedal. Yet we know brake pedals reduce the risk of car accidents. If asked we can explain why this is so.

>The exact mechanisms are as yet unclear

If they were doing proper, hard science they would be conjecturing theories about such mechanisms and then testing those theories.

</comment></comment><comment><USER11> getting hit by a car also reduces risk of heart or any other major diseases by a huge fraction</comment>


Microsoft: don't expect HoloLens' field of view to get much better - <AUTHOR> http://www.theverge.com/2015/6/18/8809323/microsoft-hololens-field-of-view-kudo-tsunoda

<comment><AUTHOR> A review of HoloLens: [https://www.youtube.com/watch?v=PynqcAHXpg0&feature=youtu.be...](https://www.youtube.com/watch?v=PynqcAHXpg0&feature=youtu.be&t=1797)</comment>


Linux Productivity Tools (2019) [pdf] - <AUTHOR> https://www.usenix.org/sites/default/files/conference/protected-files/lisa19_maheshwari.pdf <comment><USER6> I do my development work and run most of my agency (with multiple employees) with Linux. For some of the business things that most people don't assume Linux can do, I use:

1\. Xournal to annotate PDFs (aka sign contracts without printing them and scanning them back).

2\. LibreOffice of course for most document related work

3\. OBS Studio for recording webcam videos along with screen sharing

4\. Audacity for audio editing (heck, I used this even when I was on Mac OS X)

5\. Technically I've tried video editing with OpenShot, but do find myself back at Final Cut Pro X on my now 6 year old Macbook Pro for that for now

6\. pdfsandwich and Tesseract OCR for OCR/turning PDFs into searchable files

7\. Chrome/Firefox are both first class and run all the modern day web application stuff

8\. Tons and tons and tons of command line stuff that Linux is well known for

9\. QEMU/KVM for hosting arbitrary virtual machines with almost native performance

10\. GnuCash for double entry accounting for personal and volunteer society finances. I used GnuCash for a while to run the S Corp accounting when we were on Freshbooks and Harvest, but we've since graduated to QuickBooks Online for better invoicing and CPA office professional services support.

11\. GIMP for photo editing

12\. Inkscape for messing around with vector graphics

Once you get past locating the tools to do your job. Linux has everything.

<comment><USER7> > 5\. Technically I've tried video editing with OpenShot, but do find myself > back at Final Cut Pro X on my now 6 year old Macbook Pro for that for now

I wish that there was a better video editing alternative for a non-mac... Openshot and the others I tried crash too much (Openshot crashed for me today while trying to do simple trim)

<comment><USER8> The new 2.5.1 version on OpenShot is a big stability improvement over 2.4 (which is the current repo version)

<comment><USER7> 2.5.1 is the version of openshot-qt that I was using

</comment></comment></comment></comment><comment><USER9> Its table of contents doesn't do it justice. this is a great deck! super dense and straightforward.

my tiny tip to contribute:

for those who could never be bothered to remember the ctrl-commands for traversing words, but are familiar with `vi`-style movements: you can go one step above the suggestion in this deck with `set -o vi`.

<comment><USER10> I'm a heavy vim user, but I still prefer the emacs-style key bindings for bash. If I want to do vim-style editing on the command line, I sometimes use Ctrl-X Ctrl-E to edit the line in my default editor (which is vim).

YMMV, of course.

<comment><USER11> `.inputrc` is your friend. I have `v` (in normal mode) configured to open the line in an editor, because muscle memory sometimes makes me try to enter visual mode when editing a command.

<comment><AUTHOR> fc is an interesting related bash-builtin command. It will open $EDITOR and put the last command in it to edit.

</comment></comment></comment></comment><comment><USER12> _locate_ is not mentioned -- two orders of magnitude faster than _find_ for searches from '/' on my laptop, e.g.

      find / -name \*bashrc\*

      locate bashrc

Faster because reading from a single binary cache file, updated nightly, rather than opening every directory inode under /. To force an immediate synchronous update of the cache:

      sudo updatedb

<comment><USER13> Relying on a database which gets updated nightly is problematic for some usage though in at least 2 ways: I don't leave my computer on if I'm not using it so there's a good chance the db will simply never update (I guess?) plus it's only usable for locating files with confidence if you know they're system files or else they were on the system yesterday. Or, you run updatedb manually all the time and weep because that's not something instant, at all.

All in all, the idea is good, but I'm almost sure there are better implementations (even Windows has tools like 'Everything' which use a database but which gets continuously updated).

<comment><USER14> There are cron implementations that handle the "turned off at night" problem. anacron is one of them.

</comment></comment></comment><comment><USER15> Nice slides. I missed him covering ripgrep and friends, which is very useful to avoid slower find-grep queries.

Along with ripgrep, I think GNU Parallel (covered in the slides) and htop (briefly discussed) are great additions to any Unix development environment.

The rest of the standard utilities have stood the test of time surprisingly well. But top is a bit wonky, xargs has many pitfalls and, as I said, ripgrep is great for speeding up some find-grep workflows.

<comment><USER9> +1 for ripgrep (it really _is_ a lot faster).

Also, I recommend using fd as a replacement for find. It's API is a bit easier to grok imo, and it's similarly blazing fast.

fd/rg/fzf are the core tools I end up using most frequently, working in a big monorepo.

<comment><USER16> Does fd actually cover all the same ground as find? I used to be intimidated by find, but these days I find it's extremely useful for all sorts of otherwise complicated file location operations. For example, to find files newer than a certain date, just use 'touch' to set the date of a temp file and then 'find -newer temp'. Or, I have a script that deduplicates all the regular files in a tree by hard linking them to a file named by the sha256 of the file's contents 'find -type f | ( while read -r fn; do ...; done )' and then, after deleting files or whatever, I can "garbage collect" the shas by deleting files in my link farm that only have one hard link 'find -links 1 -print -delete'

<comment><USER17> Much the same here, but I tried fd the other week, and for _simple_ searches it definitely feels much quicker and "lighter", so worth adding to the toolkit imo.

</comment></comment></comment></comment><comment><USER18> Here's my non-cli list of to me usefuly software on linux (working as freelancer since 2010):

\- Webstorm + Phpstorm: Amazing tools for web development

\- Sublime text for simple text editing

\- Meld for graphical diffs between files and directories. Very useful.

\- Signal client: Using it more and more recently

\- Spotify: That's not productivity though :)

\- Joplin for markdown formatted note taking

\- KeepassCX + FF extension: Works decently for password management. Though there's no solution for FF mobile as far as I know.

\- Reaper for professional audio production (never liked audacity and ardour). There's also Bitwig which is more like Ableton live but quite expensive.

\- Gimp: I use it but I don't like the user experience.

\- Inkscape works pretty well for anything vector based

\- Libreoffice: I tend to use calc regularly

\- Darktable for raw image editing

\- Arduino

\- Figma for digital design (web-based, so not really linux)

\- Nextcloud as file storage and for synching contacts and calendars.

\- Zoom for video conferencing (need to try jitsi again though)

<comment><USER19> > KeepassCX + FF extension: Works decently for password management. Though > there's no solution for FF mobile as far as I know.

Not sure what mobile platform you use, but on Android I have been very happy with Keepass2Android ([https://github.com/PhilippC/keepass2android](https://github.com/PhilippC/keepass2android)). It uses the android password-manager API so you get autofill (or at least a quick-access button) on login fields in both apps and websites.

Edit: It also supports a lot of methods for syncing the keepass database between devices, I point it to a directory that's managed by Syncthing and it works pretty flawlessly.

<comment><USER18> Thank you, I will check that out!

</comment></comment></comment><comment><USER20> One useful thing when managing one's time is to know _when_ a command will complete. I have a habit of using "pv" anywhere I wait for a result so that I know how long it takes:

[http://www.ivarch.com/programs/pv.shtml](http://www.ivarch.com/programs/pv.shtml)

It's basically "cat", but with a progress bar. Also useful for measuring IO speed and volume (e.g. decompression: `pv -c largefile | gzip | pv -c > /dev/null` )

<comment><USER21> You can also use it with dd, or even just redirect it directly to a block device. I use it a lot for writing USB images. `pv image.iso > /dev/sdX`. Just gotta be careful not to redirect it to the wrong one...

<comment><USER22> Project idea: ML-based snafu-avoider that prompts for confirmation when past invocations by other users in the community of that command resulted in manifestations of regret[1].

[1]: screaming picked up by mic; detected maniacal CTRL-C'ing as immediate as it is futile; permanent loss of peer relationship to the project's cloud (indicating subsequent reformatting and/or booting-off-tall-building)

</comment></comment></comment><comment><USER23> This is an awesome deck. I'll be bookmarking this as a great resource to pass along.

Tangent: although the portability and consistency of PDFs is nice, I'd love a browser extension that gave me a nicer view of slides that were exported as a PDF. I find there's something more satisfying about discrete pagination vs continuous scroll for these types of things.

<comment><USER24> Are there any good parsers to convert pdf to html/epub? It would rely on the pdf being well structured.

<comment><USER25> Pandoc has worked for me.| it literally does everything.

</comment></comment></comment><comment><USER26> The python utils section missed the very cool json.tool that can pretty print JSON files (and exists on your OS if it includes Python):

cat /tmp/foo.json | python -m json.tool

[https://docs.python.org/3/library/json.html#module- json.tool](https://docs.python.org/3/library/json.html#module-json.tool)

<comment><USER27> Don't abuse cats, use `python3 -m json.tool < test.json` instead.

<comment><USER22> Bit of pointless contrarian opinion from a long time cat|'r:

> Characters saved with "<"? 3. > Hours lost with accidental ">"? unbounded.

Preface: I'm confident on the shell & with my keyboard: I've been using shell redirects for a couple decades, learned touch-typing up to around 80WPM, and used to note-take math lectures live in latex. Yes, I have noclobber enabled. But...

I can't promise myself I'm on a machine configured that way OR that I won't typo this one on a file that really matters.

I kinda use of `cat` as a `immutability-please` command: it _creates_ a barrier/seam between this file and whatever I'm doing with it, such that I'm _guaranteed_ nothing downstream will mutate it (as long as everything only works on stdio).

In a kinda similar way: by starting with `cat x |` (or even just `cat x`, frequently!), the rest of that compound command is _input source independent_ (and even _ignorant_!) -- if I want to hook it up later to a `curl example.com/xyz.json`, I don't need to split it into separate commands/introduce temp files/etc. This is especially because I find myself doing a _really_ quick scan of the entire file ("did it return the actual object this time or just `{}`?"), then piling on transforms from there.

Something about doing `cat x | head` and then kill-wording to fill in `next- thing` feels faster and more consistent than `head x` and then `next-thing x`, maybe because the filenames are often much longer than the commands? Maybe I need a "go to start of line, forward-kill one word" hotkey?

tl;dr: i'm playing psychological games with myself and TBH not sure I'm coming out ahead.

<comment><USER28> Wow, you described my workflow exactly. Using "<" might be shorter and faster- for-the-machine, but it's less readable and breaks the left-to-right order. I also frequently start with `cat x`, see what's in the file, move on to `cat x | some filter` etc.

<comment><USER29> '<file' can be used anywhere in the command. If it makes more human sense to have the file near the start, you can do that.

grep <file -opts 'regex'

<comment><USER22> This is why I walked back my claims a bit in my tldr — basically started trying stuff out and had a "whoa not used to the way that looks, but it does _work_..." moment.

I think I still have the "wrong" preference, but I appreciate learning some new stuff!

</comment></comment></comment></comment></comment></comment><comment><USER30> Some distros don't install lsb_release by default. It might be better to consult the /etc/os-release file instead.

[https://www.freedesktop.org/software/systemd/man/os- release....](https://www.freedesktop.org/software/systemd/man/os-release.html)

[http://0pointer.de/blog/projects/os- release.html](http://0pointer.de/blog/projects/os-release.html)

</comment><comment><USER31> These lists always delight and frustrate me at the same time. Every piece of software seems to have a lot of those useful, little tricks, shortcuts and functionalities but discovering them is always so difficult.

Biggest problem is that you don't even know they're there. You don't even know to look, what to look for. I seem to always stumble my way ass backwards into them, and then, be somewhat irritated that I didn't know them before.

</comment><comment><USER32> I like to use systemd timers rather than cronjobs nowadays.

<comment><USER8> For those looking for a link [https://wiki.archlinux.org/index.php/Systemd/Timers](https://wiki.archlinux.org/index.php/Systemd/Timers)

</comment></comment><comment><USER33> feedgnuplot [1] is wonderful for quick visualizations of data from the shell. Also great for decoupling visualization from CLI programs.

[1]: [https://github.com/dkogan/feedgnuplot](https://github.com/dkogan/feedgnuplot)

<comment><USER34> Hey that's my old roommate! Check out his vnlog project as well, it's kinda feedgnuplot 2.0

</comment></comment><comment><USER35> How in the world did I go this long without using the "at" command? (slide 69)

Thanks for the deck, OP.

</comment><comment><USER36> Wow. Well, I wish I would have known abut GNU parallel before I wrote that massive bash script a few years ago. Thanks for posting this.

<comment><USER37> xargs can do most of the common tasks perl parallel does, see xars -P

<comment><USER38> Imho, the main advantage of Parallel is that it can execute the tasks on multiple hosts, straight from the man page:

> GNU parallel is a shell tool for executing jobs in parallel using one or > more computers. The typical input is a list of files, a list of hosts, a > list of users, a list of URLs, or a list of tables.

</comment></comment></comment><comment><USER39> In native Mac text editors, you can use e.g. SHIFT + ALT + LEFT to select the whole word on the left of the cursor. Is there a way to get a Mac terminal that uses similar shortcuts? For copy/paste also?

Related, but I found [https://micro-editor.github.io/](https://micro- editor.github.io/) which tries to use shortcuts you'd expect in native Mac apps.

<comment><USER16> There's a couple options here: most of the Mac terminals allow you to specify custom key-combo -> Terminal input mapping that can be used to get this. Also, on most shells you can customize the interpretation of the key bindings to attach this key combo to a specific editing command. Which works best depends on the functionality and the key combo you're trying to bind.

</comment></comment><comment><USER40> slides 14 and 15 - terminals have emacs shortcuts??!

EDIT: I am god now

<comment><USER41> You can get vim shortcuts as well.

zsh: bindkey -v

bash: set -o vi

<comment><USER42> You can configure readline (which is what bash uses) to use vi-bindings via $HOME/.inputrc then everything that uses readline (which is pretty much everything) will also get vi-bindings.

</comment></comment></comment><comment><USER43> The main thing I miss from OS X is Droplr (pain free sharing of annotated screenshots) and Jumpcut (pastebuffer history tool). Can't find anything on Linux for either of those that works nearly as well. I can still go to an old Mac for occasional needs like Final Cut Pro but those are tools I used several/dozen of times every day before.

I'm on PopOS.

<comment><USER44> Have you tried Flameshot for screenshots?

<comment><USER43> I had not, just installed it though and it looks fantastic, thanks! The best I'd found previously was a no-annotation script that failed most of the time with a vague "something went wrong" error.

<comment><USER44> I hunted around for a while looking for something similar. I spent so much time in Slack working remote, that fast screenshots with arrows and notes are critical to communication.

Coming from a Mac environment, I can't remember what the tool was that I used previously but I think it was purchased by Evernote. Flameshot has been excellent as a replacement.

<comment><USER43> You're thinking of Skitch, I used that too before Droplr.

</comment></comment></comment></comment></comment><comment><USER45> Not exactly linux but the Speedcrunch calculator is really good.

</comment><comment><USER46> Another good productivity hack is having a good clipboard manager.

I highly recommend Green Clip: [https://github.com/erebe/greenclip](https://github.com/erebe/greenclip)

You can assign custom shortcut keys to pull it up and it can fuzzy search through your clipboard items.

<comment><USER38> Clipboard managers are probably the thing I miss the most on Wayland.

<comment><USER47> Haven't tried this yet but worth looking at? [https://github.com/yory8/clipman](https://github.com/yory8/clipman)

</comment></comment></comment><comment><USER48> This is great! I might add a slide or two about Makefiles. Probably the topic is too big and out of scope, but inexperienced Unix users may not realize that they are useful for so much more than compiling multi-file C programs.

<comment><USER49> Please lets not recommend anyone new to Makefiles. It's such a dated system that you need to use tabs for functionality.

Just one of million better alternatives like [https://www.pyinvoke.org/](https://www.pyinvoke.org/)

Makefiles need to be allowed to die so we can clear ourself of this absurd legacy cruft.

<comment><USER50> Make is for tracking dependencies between targets, and rebuilding stuff. Looks like pyinvoke does some glorified scripting, or something. I will never understand why so many people have no idea how to use Make, but are convinced that it is terrible, and then try to fix it by reimplementing some tiny subset of its functionality.

Make is great. Learn it an use it. Its limitations are well-known, but easy- enough to work around. Fixing them properly requires lots and lots of complexity, and you get bazel when you try. And it's way overkill for all but the biggest projects, which is why Make has been so successful.

<comment><USER49> It's was great but then we improved our work flow patterns. Make is really limited and ugly by today's standards. I mean you have to use tabs for Pete's sake and if you include a single space the program will break. It's dated software that should be abandoned with either evolution or revolution.

</comment></comment></comment></comment><comment><USER51> Other useful tools include mosh or EternalTerminal to handle either low bandwidth or spotty network when you need to remote into a server, as well as VNC for when you need a GUI on the server but X-forwarding is too slow.

</comment><comment><USER52> I expected something more of a traditional set of "productivity tools".

Eg. a tool like "PDF Mod" is a gem I struggle to remember the name of when I set up a new computer — quick and easy way to assemble/extract PDF pages :) It's long unmaintained it seems, though.

For those expecting the same, this is mostly "GNU terminal tools" (+ python, tmux and a few other tidbits), so applies to pretty much any modern GNU system (including non-Linux systems, and I am pretty sure homebrew on Mac has all of these).

</comment><comment><USER53> Thanks, these look great. Is there a recorded talk for these slides?

<comment><AUTHOR> Unfortunately no. The conference recorded only regular track talks. This was on Tutorial/Training track.

</comment></comment><comment><USER54> > cmd #tag to tag a hard to remember command

Command tagging wasn't really explained in the deck. I had to read this archived web page for an explanation:

[https://web.archive.org/web/20191216131445/https://www.ostec...](https://web.archive.org/web/20191216131445/https://www.ostechnix.com/apply- tags-to-linux-commands-to-easily-retrieve-them-from-history/)

<comment><AUTHOR> Thanks for the comment. An example of #tag in action is shown in slide 39 (In the talk, I mentioned we will see an example later).

</comment></comment><comment><USER55> This is an awesome intro, thanks! Will definitely share.

I can't recommend fish-shell highly enough for anyone spending significant time in the CLI. It can't completely replace bash et al, but it's not really meant to. Just install it and give it a try and you'll get addicted pretty quickly.

</comment><comment><USER56> The only thing that I miss in linux is a pdf viewer that can show inline animations (like those produced by LaTeX's "animate" package). I am still forced to run adobe's 32 bit pdf viewer because it is the only viewer available in linux that supports this kind of pdf.

<comment><USER11> Wow, that seems like a rather questionable feature for a "portable document format".

<comment><USER56> If you use pdf for making slides for a presentation, it is a legitimate use case to want some automatic animations or videos. It is actually possible, and adobe's viewer certainly supports it, but no program on linux does.

You could argue that we shouln't be using pdf for making slides in the first place, and maybe you are true. But if I want beautiful math typography (which is even more important than animations), all other options are sadly not up to par.

<comment><USER11> I understand; I used Beamer back in college. It just seems like that's not really a good fit for the original purpose of PDF files. If they wanted to support presentations, maybe they should have created a new file type based on PDF but with extra capabilities.

</comment></comment></comment></comment><comment><USER57> I guess this is not the place to discuss about how to change all of computing and how it should be done better and that Linux is a distraction?

[https://www.youtube.com/watch?v=rmsIZUuBoQs](https://www.youtube.com/watch?v=rmsIZUuBoQs)

</comment><comment><USER58> If you want to know which cli tools you can expect on every *nix machine, I can recommend this page [1] which gives a nice overview of the POSIX shell standard.

[1] [https://shellhaters.org](https://shellhaters.org)

</comment><comment><USER59> Some essential stuff lacking here (unless I missed it): pushd, popd, dirs, jobs, and fg.

<comment><AUTHOR> I did have jobs, fg, nohup in an expanded version but had to trim to fit the slot. I considered pushd, popd but decided against it as it requires a bit of explaining -- figured I won't have much time.

<comment><USER59> I see. I tend to recommend zsh, anyway, which has navigational features that superannuates pushd, popd, and dirs.

</comment></comment></comment><comment><USER60> Awesome! Thank you for sharing this. I've been trying to get better with my Linux CLI knowledge, and this will really help.

</comment><comment><USER61> As a wsl user I miss all this tools.

</comment><comment><USER62> Is the presentation this was delivered to recorded? I'd watch whatever lecture this was from.

</comment><comment><USER63> Is there any link to the actual video presentation of this?!

</comment><comment><USER64> my list visual stuff:

\- xournal - pdf editor

\- calibre - <USER2>

\- keybase - slack replacement

\- cherrytree - <USER3>

\- anki - <USER4>

\- shutter - <USER5>

\- zoiper - voip calls

\- kazam - video snippets (screen recording)

\- remmina

\- vsc

command line

grep -nr, locate, ncdu, htop, ipython, vim, ssh, tsp, tail, less, youtube-dl ;-)

</comment><comment><USER65> Great compilation

</comment><comment><USER66> tmux ftw!

<comment><USER67> screen!

</comment></comment><comment><USER68> I absolutely love this sort of thing. I am a sysadmin with something like 30 years experience. I am as passionate about the subject as anyone but I lack some presentation skills and possibly imagination. I'm also old enough to know what I lack!

Why not give open source stuff a go?

</comment><comment><USER69> My poor brain corrected the url to "unisex.org" on first glance.

</comment><comment><USER70> Otoh facilities like Oak Ridge can be expected to be conservative in their tech, otoh sed and awk should be declared as a threat to national security.

</comment><comment><USER71> How much of these is really still relevant with now Python quickly becoming new scripting language across all platforms? I now tend to prefer 3 lines of Python vs 1 line of cryptic unmaintanable Linux-only bash. With new great subprocess module in Python, I feel bash scripting is really unnecessary except in few situations like .bashrc or really quick onliners.

<comment><USER72> I don't think Python and bash solve the same problems at all. I don't see how they could be seen as comparable, much less interchangeable.

<comment><USER73> If you're doing any filesystem based manipulation, then it's probably easier to use the shell and tradition Unix utilities. If you're manipulating files, the sort of thing where awk and sed start becoming important (particularly complex manipulations with awk and sed), you're probably better off with Python. Those use cases are pretty much why languages like Perl and Python came to be.

</comment></comment></comment><comment><USER49> I feel that most of the tools mentioned here are quite outdated already and in 2019 alternatives should be recommended.

find -> fd

grep -> ripgrep

wget/curl -> httpie

awk/sed are just horrible to learn for beginners, would advise to just pick up python instead via xonsh[1] or pyp[2]

How about we don't teach new users these legacy tools and we can finally progress a little?

1 - [http://xon.sh](http://xon.sh)

2 - [https://github.com/hauntsaninja/pyp](https://github.com/hauntsaninja/pyp)

<comment><USER74> As much as I like httpie, in my view it's not a strict improvement like fd or ripgrep. This is unfortunately due to it being written in python.

<comment><USER75> Well I use it all the time and it's a huge improvement to my life. The elegant and simple syntax makes testing endpoints so much easier than the verbose curl and wget alternatives...

curl

       curl --header "Content-Type: application/json" -d '{"some": "content"}' <host>/<resource>

httpie

       http <host>/<resource> some=content</comment></comment></comment>


Why Switching to AWS May Cost You a Fortune - <AUTHOR> https://www.hivelocity.net/blog/AWS-bandwidth-expensive/ <comment><AUTHOR> I found this while doing some research on hosting costs on AWS and GCE.

Network egress _does_ appear to be very expensive on the big cloud providers.

In contrast, compute cycles seem more reasonable for what you get. Still more expensive than dedicated servers - but you are getting some benefits as well - namely someone else to manage those servers, elasticity etc

Why is bandwidth so expensive on AWS and GCE?

<comment><USER2> > Why is bandwidth so expensive on AWS and GCE?

Peering ratios + network architecture costs.

</comment></comment><comment><USER3> Caption says:"Marissa Mayer has reportedly been spending Yahoo! money like water."

Which in California could mean, very carefully.</comment>


What .NET Developers ought to know to start in 2017 - <AUTHOR> http://www.hanselman.com/blog/WhatNETDevelopersOughtToKnowToStartIn2017.aspx <comment><USER2> > GAC – The Global Assembly Cache is where the .NET full Framework on Windows > stores shared libraries. You can list it out with "gacutil /list."

I think that one can be taken off the list now, unless you're working with pre core.</comment>


I am in competition with you for all sorts of experiences – you will lose - <AUTHOR> http://glass-apps.org/google-glass-next-2013-robert-scoble <comment><USER2> Too often real innovation is lost behind froth and grandstanding like this - too many excitable nerds and shiny toys, not enough introspection on the effects of technology on society. Not enough emphasis on problems that need solving, too much on how to raise more ad revenue or VC money.

I saw this talk live at NEXTBerlin, and while in the audience all I could think was 'wow, I don't care at all if you win - your life sounds like it must suck if you're competing for ridiculous minutiae - and what has this got to do with privacy anyway?'. Questions of privacy - an important pillar of digital policy in Germany and other EU states - were brushed aside at the prospect of faster airline tickets and 'competition for experience', whatever that means.

Really? Can Scoble not imagine a world where experience isn't a zero sum game? Is this the perception of the world we're being locked into by technology?

Google Glass has a lot of potential in some spaces - in teaching, in medicine, in law enforcement - but I am terrified that its evangelists and early adopters are brushing aside the concerns of a digital layer in front of real experiences so readily, as if more technology is automatically a good thing.

<comment><USER3> I was shocked that he thinks I'd be competing with him for a raise. He's not even on the same playing field as I am if a raise is what he is after.

<comment><USER4> He is obviously talking metaphorically. He knows he is not competing with you or with any of the many people listening to his talk. The point is, people in your playing field using better tech than you will win over you.

</comment></comment></comment><comment><USER5> Sure. You win Scoble. You just go ahead and book that flight or grab that table. I'll be here in my log cabin in the mountains, looking at the stars, and losing.

<comment><AUTHOR> looking at the stars and taking pictures while holding your girlfriend with both hands and not fiddling with your camera

<comment><USER6> Certainly a winner at the "hyper competitive dickhead" experience.

</comment></comment></comment><comment><USER7> I think Scoble might be missing a very important point. Our ability to access information isn't the problem. We all already have (nearly) instant access to all the information we'll need.

The thing that worries me most about Glass is that it's solving the wrong problem. We're not running around in a world where it's too much of a bother to look at our phone, but instead that we're less and less capable of focus.

If you look at the nature of our technology, we've already (mostly) solved the problem of information search and retrieval at any time. We all have a very near the same quality experience when it comes to information.

But where we break apart is in the ability to focus and make new connections from the data. I wonder whether Glass users are drowning themselves in more noise, and not really getting the space to create new, meaningful, creative connections.

I wonder whether we need new ways to disconnect more intensely than we need a more subtle overlay of noisy information on our reality.

<comment><USER8> _> Our ability to access information isn't the problem._

I disagree with you both on this point and your characterization of Glass as a "subtle overlay of noisy information".

Nowadays, although that information access is quick, it could be quicker and more seamless. There's a world of difference between:

1\. Fishing out your smartphone from your pants/bag/wherever

2\. Unlocking it (with requisite passcode, thanks corporate IT)

3\. Bringing up the search app

4\. And either saying what you want after invoking the voice search (and hoping it comes up right, or else you get to do it over again) or typing what you want (and hoping you made no mistakes).

And:

1\. Saying, at any time, "Ok Glass, search for (thing)", and having the results played back so you can hear them.

The first one feels contrived and annoying, the second feels passive and natural in comparison.

Glass is unique in that the first two steps of that transaction are eliminated outright, and the third is reduced to saying some magic words. The fourth is greatly mitigated by the fact that Glass is likely in a better position to capture your voice than the speakerphone mic on your smartphone.

Passive access to information (and I'm saying access, not overlay, for a good reason) is going to be the next big thing for precisely this reason, ease of use!

But let's take another example. I'm sure you've seen the posts decrying someone "missing out" on some event because they were too busy recording it. Now? That's not a problem anymore. "Ok Glass, record a video". You're done. You don't have to think about it, you just launch the recording and then go back to whatever you were doing.

Focus? You barely even see Glass unless you're actively looking up at it. Indeed, you need to "focus" on it to use it. The transaction is just reduced from messing with your phone to an upwards glance.

This is also why I disagree with your assessment of glass as being both an overlay (which it isn't), and noisy (which it isn't, and which would go against the guidelines anyways).

I'm finding more and more that people who feel they need to "disconnect" are simply failing at technology. You are no more connected than you let yourself be! If you are so wired in, by your own choices, that you feel the need to get away from it all for a length of time, how about just not wiring yourself in that tightly?

</comment></comment><comment><USER9> Fluffy marketing bullshit. Sorry.

Privacy concerns are legitimate. Google Glass may not even be the problem. But the impact of the availability of ever more personal data in the hands of government and corporations for our society needs to be discussed. People have a legitimate right to know about their data trails.

PS: The #next conference "stole" their slogan¹ from the 26C3 Chaos Communication Congress²

1: <http://nextberlin.eu/2013/04/behind-the-scenes-at-next13/>

2: <http://events.ccc.de/congress/2009/>

<comment><USER2> It's not exactly an uncommon phrase...

<comment><USER9> Yes. I won't impeach them. I think it is worth pointing out because it shows a certain lack of creativity to use a slogan from a _very_ popular conference held in the same city just some years ago. This and considering their presentation as leaders in all aspects give me the impression of poor style from them.

How popular is the phrase for native english speakers?

</comment></comment></comment><comment><USER10> I would add an 'if' to the headline to make it less inflamatory: 'If I am in competition with you for all sorts of experiences, you will lose'.

I am not competing with you, and I do not care if I take a late flight, or do not have a reservation to this restaurant because in my mind reality is not goal driven, but path driven.

</comment><comment><USER11> Shallow

Getting the answer or the data isn't really the biggest issue. The problem is understanding what that data actually means. I am pretty convinced (given the students I observe), that google helps with data and trivia, but doesn't help with the understanding of what that trivia means. Put another way, you can access data faster than someone without the glasses, but can you turn that data into information?

I am all for the demise of rote learning of names and dates, but I think we need more tools for explaining the how / why and not the what. You can lookup the API calls with the glasses, but not know how to do the design of those API calls.

</comment><comment><USER12> It's funny how people here automatically start the reactionary rejection of a new technology taking over our current way of processing information.

It is not really a competition about who lives a better life, or what is the true experience. It is about how general people's life will be changed by the product. Scoble's point is very clear: the product gives users power through technological superiority and let them have a new mean of social display. When everyone starts to get Google Glass, its function no longer matters; it becomes a social device.

<comment><USER2> I think the sort of future where I need to buy and use a device from a corporation to modulate my experience and participate in society is a pretty shitty future, and we should be doing some thinking about that.

<comment><USER13> Having to use corporation-made tools to fully participate in society is not the future, it's the past and present. Cellphones, computers, cars, house appliances, even (regular) glasses if you have poor eyesight, it's all required if you want to participate in society as it expects you to.

If you mean from a _single_ corporation, that's just a temporary condition; competitors are already starting to appear: [http://www.slashgear.com/telepathy-one-takes-on-google- glass...](http://www.slashgear.com/telepathy-one-takes-on-google-glass-with- ultra-sleekness-13273729/)

<comment><USER2> I don't think any of the things you mention are equivalently intrusive. But it's a point that scares me a little.

</comment></comment></comment></comment><comment><USER14> An experience mediated by technology is not the same thing as the original experience - we can debate whether it makes the experience richer or poorer, but it certainly makes the experience different.

Even a UI-less, effortless experience transforms the experience. For instance, passively recording what you see through Google Glass will cause you to view the world with a mind towards recording and archiving your experience.

While Scoble believes he is winning a competition, he is simply opting into a different set of experiences - one where he might get access to things like airline tickets or restaurant reservations a little faster than the rest of us, but also one where he's also constantly evaluating how to use the technology he's carrying to interact with the world. Some people will prefer this set of experiences, while others will prefer the originals.

Both types of people _should_ be able to get what they want, but I worry that Google Glass will alter the experiences of everybody, not just its users. We all act and think differently when we're aware we're being recorded - it makes us more self-conscious, putting us in an 'observe ourselves' mindset that competes with the 'observe the world around you' mindset. In a world with a plurality of Google Glass-wearers, we'll have to assume we're constantly being recorded when around other people, and that's not something I particularly care to experience.

<comment><USER13> It should be noted that Glass does not - and cannot, for battery constraints - record everything the user sees.

</comment></comment><comment><USER15> The examples mentioned in the article (plane flights, tables at restaurants) involve competition between people in the same place 'competing' because a given resource is scarce. I'm not making the link to privacy laws at _nation state_ level. There are buses and trains as well as planes. There will be slightly later planes. There are _plenty_ of places to eat where I live.

</comment><comment><USER16> Wait until network effects take place and it creates a lock-in for a specific vendor. (Besides, congestion will strike and he will also loose a lot of his races.)

So, it is true, we are in a competition, but not the competition that Scoble is referring to.

The competition is more about open standards, patent laws and the future of freedom.

</comment><comment><USER17> And then you suffer a tragic family loss or an incurable decease or something, and you gain some humility and perspective....

<comment><USER13> <http://scobleizer.com/2006/05/10/bad-news-gets-worse/>

</comment></comment><comment><USER18> Man, I'd love to be in a place where my only worries are if I get the last table in the restaurant or the last flight home.

Meanwhile, don't we have more important things to do than listen to someone go "yeah, I can use my apps faster than you"?

<comment><USER19> > Meanwhile, don't we have more important things to do than listen to someone > go "yeah, I can use my apps faster than you"?

Children dying of hunger in Africa. If you aren't working on that, you are a bad, bad person and should be ashamed.

Everything else is a waste.

</comment></comment><comment><USER20> This reminds me Falken's law from War Games. True for many games: the best way to win is to not play.

</comment><comment><USER21> Incredibly simplistic and shallow reasoning.

Scaling anxiety disorders big time.

Here we go...

</comment><comment><USER22> I'm guessing that anything Scoble is competing with me for, I probably wouldn't be very interested in, so he's welcome.

(Except maybe that airline ticket if I don't get one of the remaining two...)

</comment><comment><AUTHOR> it is the same thing with being able to google really well.

I was about 1000% more efficient than my coworkers at new things, ways and information because I googled fast and found the information.

<comment><USER23> This. The ability to Google efficiently is severely underrated.

<comment><USER24> Do you (or someone) know about any tutorial or a book for learning how to google? Is "how to google" only about phrasing queries, using correct words, improving query using results from its previous version, using quotes, and so on, or is it something more?

<comment><USER23> Using my google-fu ;) I found this link which may or may not be any good(<http://www.googleguide.com/advanced_operators.html>).

I have never used operators myself, I think just the way you structure and choose your words wisely has the most impact.

</comment></comment></comment></comment><comment><USER25> The future looks like people spending half their lives recording video and half of it watching the records. Recursion looks possible if you think of it!

</comment><comment><USER26> All true. But we technophiles are better served by downplaying this aspect of technology's advance.

A large fraction of people are utterly freaked out by the idea that they'll be obligated to adopt new technology just to keep up.

Better to give many chances for people to discover on their own that they really _want_ to use a new technology for positive reasons, rather than out of fear.

<comment><USER6> Many people will discover they don't. I have a mobile phone that is the first mobile phone I ever had (sucker! I never answered the damn thing anyway!); someone gave it to me because they were sick of not being able to phone me any time of the day or night. It's over a decade old and it spends most of the time switched off. If it does happen to ring, I generally ignore it. I live quite happily without carrying a phone or smartphone around with me; I suspect many people will quite happily live without being able to wear their google interface on their face.

<comment><AUTHOR> yes of course. There are many people without a car, mobile phone or a pension. There are many ways of live that can be enjoyable. But everything come with a certain risk that can be minimized with technology.

</comment></comment></comment><comment><USER27> This man is a grotesque monster.

</comment><comment><USER28> If I'm in front of my computer with Ghci, or whatever, open and you're trying to do the same thing on your Glasses, you'll lose. Oh wow, you can book a table, or a flight. I care why?

Can I think of things that tech lets me do quicker? Sure. But that's why I sit in front of a computer for a lot of the day and carry a tablet. Advantage to Glass is? Not even gonna be on the order of 30 seconds here....

Most of the advantages I can think of to do with Glass just have to do with having a rich/continuous supply of data - and that'll only really take off when you can store and cross reference it effectively.</comment>


Ansible Container - <AUTHOR> https://github.com/ansible/ansible-container <comment><AUTHOR> The main point of this, to me (from the README):

        A Dockerfile is not much more than a script with hand-crafted shell commands.
        We're well past the point where we should be managing build processes with
        manually maintained series of shell scripts. That's why we wrote Ansible in
        the first place, and this is just as applicable to containers.

I have tried building Docker-based infrastructure solely with Dockerfiles and shell scripts, and for anything but toy apps and really simple microservices, you end up with 90's-era kludge of fragile build steps, and managing, tagging, and updating Docker images becomes a nightmare.

I think using Ansible to build/manage images is a great idea—the actual deployment/orchestration might be better managed by another tool, highly dependent on your service and/or workflow, but Ansible can do that too, for many use cases.

People setting up Kubernetes and a manually-managed Docker image pipeline for simple one-page-apps or brochureware or CRUD apps seems like insanity to me... am I the only one?</comment>


Can you know too much about your organisation? - <AUTHOR> https://hbr.org/2019/12/can-you-know-too-much-about-your-organization <comment><USER2> Not sure how to feel about this. On the one hand, this seems intuitive; learning that your work is less useful than you thought would give a worker less job satisfaction. This would explain the career changes that occurred directly after the study. However, this could also be seen as evidence that _more_ managers should be made aware of the company's full operations, as it could lead to increased manager-initiated changes.

At the end of the day, managers are incentivized to prioritize their own team or part of the organization over pushing for organizational change. Is it possible that this would cease to be an issue if managers were encouraged to try and suggest changes, without it impacting their professional status? Because as it currently stands, pushing for a radical new project means risking your own job if it goes poorly.</comment>


Ask HN: good interview questions? - <AUTHOR>

What are good interview questions?
I have been asking questions about features in different languages that a developer or hacker might like.  I think it does 2 things, 1. i get to know their style and what they favor in a language, and 2. i get to hear them talk about a language intelligently.
I think more than not I like looking to see if someone is willing and capable of mastering a language than asking them to perform a specific task.
I also asked someone if they could quickly draw a class hierarchy for a car and a driver.  I am just wondering if that is too easy, or too hard.
I have been interviewed by a number of companies and it seems that the ones that will have you operating more independently ask easier questions.
So what do you all think.
PS. i have another interview to give at 3:30pm today so i might use some of these tips. <comment><USER2> I really liked the post the other day where they handed the interviewee a chunk of code and asked them to "make it better".

</comment><comment><USER3> I find that I can quickly get a feel for a candidate's general reasoning ability through a game of 20 questions.

</comment><comment><USER4> its really your call on what you value most and whats involved in the job. for what you say you value, your questions sound like they'd do the trick.

you might want to throw in some critical thinking type of questions, just to see what happens.

</comment><comment><USER5> Class hierarchy is vague, do you mean a class:object sort of thing or something else entirely? Specify, don't use meaningless words like hierarchy. It's academic fluff, and this is coming from a philosopher.

Reapply what I've said here to everything else. It sounds like you know what you're doing, especially as regards, "talking about the language intelligently". That means you're way ahead of the curve in hiring already.</comment>


DUO a memory game reinvented for IOS - <AUTHOR> http://iplayduo.com

<comment><AUTHOR> Hi, if you want to be a beta tester don't hesitate to subscribe</comment>


Ask HN: how can a backend coder learn to be a front end designer? - <AUTHOR>

any good ways/suggestions/sites? as a backend coder, my sites are usually ugly and un friendly to users, I want to improve. could you help advise? thx. <comment><USER2> Remember this rule: design and coding are two separate processes, each of which needs it's own workflow.

If you style a site by adding bits of css now and again while you build the backend of a site, it will look like crap. I know, because I used to do it, and the work I did then embarrasses me now.

You obviously know what a good design looks like, so do your design away from your project, in Photoshop or whatever, and don't turn it into css until you're happy with it.

Solicit criticism of your design. Ask people who know design to give you feedback, whether you know them personally or online. They'll stop you from repeating mistakes they may have learned from themselves.

Everything the user, heretohelp is saying sounds right to me.

<comment><AUTHOR> 1.really good suggestions! indeed i'm doing 'adding bits of css now and again'! as i do not have photoshop skills so far i should stop that. 2.actually i'm not that clear about a good design. do you think search 'good design example' and try to work them out in photoshop is a good way to start? i just did a search, [http://inspirationfeed.com/inspiration/40-detailed- examples-...](http://inspirationfeed.com/inspiration/40-detailed-examples-of- user-interface-design/) any designer can give the hours you need for any of the example there? it looks very difficult for me so far.

</comment></comment><comment><USER3> In the same way you can't become a good coder by reading, you can't become a designer by looking. My best trick was to look at a design and then try to recreate it without looking again. Comparing my version with theirs would often show me what i was missing.

Also, get "the design of everyday things" to unlearn your bad engineering habits.

</comment><comment><USER4> There are a lot of angles to approach this from.

There are core principles and foundations to design, much like engineering. Cultivating a personal sense of taste is important as well.

Start by doing some reading on the fundamentals of design and typography. Also, start frequenting various design blogs and websites. You need to _expose_ yourself to design much in the manner that programmers get exposed to open source code.

Once you start seeing things created by designers, you'll start to understand what reflects your personal taste and hopefully you begin to develop a coherent opinion.

Give serious thought/time to UI/UX from a functional standpoint. I highly recommend Tufte's treatises on data visualization as a way of thinking about how to model and present data to your users as well.

Next you'll want to begin doing lots of mock-ups, preferably with actual HTML/CSS/JS. Now you can start respinning designs of existing projects you've worked on, and re-do them in a way you're proud of.

Invest enough time, hammer out enough work, you should start producing thngs you can be proud of.

Just like code.

Here's a basic starter page with some information: <http://metatoggle.com/design_crs/contents.html>

<comment><AUTHOR> thx. i should put enough time. btw, the link has good content but the site's design itself is not good, at least from my perspective.</comment></comment>


Multithreaded JavaScript Discussion By Brendan Eich - <AUTHOR> http://www.aminutewithbrendan.com/pages/20101108

<comment><USER2> Interesting that JavaScript 1.6, 1.7 and possibly Harmony will have primitives for Python-like generators

<comment><USER3>
        > Interesting that JavaScript 1.6, 1.7 and
        > possibly Harmony will have primitives for
        > Python-like generators

If you want, you can already use JavaScript 1.6 and 1.7 - 1.6 is supported in FF 1.5+ and 1.7 is supported in FF 2+

<https://developer.mozilla.org/en/new_in_javascript_1.6>

<https://developer.mozilla.org/en/new_in_javascript_1.7>

</comment></comment><comment><USER4> Thanks for the link. I really didn't know that Brendan Eich, the creator of JavaScript himself, is running a podcast. Subscribed!</comment>


Real world examples using homoiconicity? - <AUTHOR>

I'm interested in example code that uses homoiconicity well. I'm not interested in pedagogical examples, such as the excellent and oft cited meta-circular evaluator.<p>I'd also be interested to hear the opinions of lisp users and the like on the benefits of homoiconic code vs the risks of using eval() or the equivalent. <comment><USER2> I only know lisp, so I'll use it as an example, but there are other homoiconic languages out there.

In lisp i can do this:

      (eval (cons '+ '(1 2 3)))

What i did was that i added the symbol + to the front of the list (1 2 3) to get (+ 1 2 3) which is a valid lisp expression, and i eval-ed it resulting in 6.

i can do other such things:

      (eval (reverse '(3 2 1 +)))

I take the list (3 2 1 +) which is an invalid lisp expression, and i reverse it, giving me (+ 1 2 3).

See what we did here? We took a datastructure and we transformed it into something the lisp compiler can recognize as a valid form. We can do this because lisp code is expressed as lisp datastructures(thats what homoiconic means).

<comment><AUTHOR> These are great teaching examples, but what I haven't seen yet is how it can be used solving problems or implementing algorithms. I'm very curious what such code looks like and how homoiconicity is leveraged to advantage.

<comment><USER2> Ok then, check out this awesome DSL example screencast in common lisp: <http://lispm.dyndns.org/news?ID=NEWS-2005-07-08-1>

I don't know how much common lisp you know, but you asked for a real example.

Also check out this awesome talk by Shriram Krishnamurthi: [http://www.cs.brown.edu/~sk/Publications/Talks/SwineBeforePe...](http://www.cs.brown.edu/~sk/Publications/Talks/SwineBeforePerl/) (audio and slides). It uses scheme. There are many more examples, but these are just off the top of my head.

<comment><AUTHOR> Thanks, I'll check these out.</comment></comment></comment></comment>


Silencing America as It Prepares for War: John Pilger - <AUTHOR> https://newmatilda.com/2016/05/30/silencing-america-as-it-prepares-for-war-john-pilger/ <comment><USER2> Brilliant piece. Pilger at his best. Thanks for sharing.

<comment><AUTHOR> I almost dismissed it after first half of the article as another RU propaganda. He didn't let me down and made his position on Trump authoritarian madness clear too.

Sums up the horror of having to pick between these horrible choices. lose/lose/lose situation.</comment></comment>


Potent LastPass exploit underscores the dark side of password managers - <AUTHOR> https://arstechnica.com/security/2017/03/potent-lastpass-exploit-underscores-the-dark-side-of-password-managers/ <comment><USER2> He has found 3 problems in the last month with LastPass. Not good.</comment>


Ask HN: Organizing Golang and non-Golang projects? - <AUTHOR> For many years I have organized my projects in a single directory like this:

  |-- projects
      |-- project_0
      |-- project_1
      |-- project_2
 A project regardless of programming language will get a directory under 'projects', that contains all files releated to this particular project.
Some time ago I started learning Golang and have since written many utilities in it as I like it very much. Golang requires a special directory layout for all it's tools to work, and this layout is incompatible with the one I'm using.
What is the best way to organize Golang and non-Golang projects? Should I just bite the bullet and start organizing my projects by language? <comment><USER2> You could use a Go "project" that is in fact the $GOPATH, like so:

        |-- projects
              |-- project_0
              |-- project_1
              |-- project_2
              |-- go
                   |-- src
                   |-- pkg
                   |-- bin
              |-- project_4
              |-- project_5

Your other projects would then not be affected at all.

Or consider using a tool like `gb` ([https://github.com/constabulary/gb](https://github.com/constabulary/gb)) that does not depend on $GOPATH. (But ensure to understand the caveats of this tool before switching to it.)</comment>


Audacious 3.10 released - <AUTHOR> https://audacious-media-player.org/news/43-audacious-3-10-released <comment> the-dude Title is misleading? This is just a bugfix release, QT planned for 4.0.

edit: also, not the original title which reads 'Audacious 3.10 released'.

<comment><USER2> Uhm, no. Read the release log - it says that in 4.0 the Qt UI will be feature complete, however, GTK+3 UI is already gone in 3.10, so you can use either GTK+2 or Qt5.

</comment></comment><comment><USER3> > code-named "Not Quite There Yet"</comment>