There are real reasons for Linux to replace ifconfig, netstat, etc - <AUTHOR> https://utcc.utoronto.ca/~cks/space/blog/linux/ReplacingNetstatNotBad <comment><USER2> I'm trying hard to fight my old muscle memory to use ip instead of ifconfig on Linux.

I have a few issues though:

* "ip" is useless as a keyword if you're looking for help online. It's extremely frustrating and probably my main issue actually learning how to use the damn thing.

* ifconfig's output is simply more readable IMO: [https://svkt.org/~simias/up/20180525-113825_ip-vs-ifconfig.p...](https://svkt.org/~simias/up/20180525-113825_ip-vs-ifconfig.png) . It's pretty weird that a brand new tool manages to have worse output than a venerable old unix command. Because of this I often end up configuring the network with ip only to double-check everything is right with a quick ifconfig. That's silly.

I think at this point I would've preferred if they had made an "ifconfig2" instead, mostly identical to the old one but with a few breaking changes to add the missing functionality. An incremental update instead of a full rewrite. There's definitely some NIH going on.

<comment><USER3> > "ip" is useless as a keyword

Most docs will mention iproute2. You can use that for googling.

<comment><USER4> Yeah that's what I loved about this article, I finally know what to google.

<comment><USER5> Future tip: your package manager should be able to find this for you, for example:

> $ which ip

> /sbin/ip

> $ dpkg -S /sbin/ip

> iproute2: /sbin/ip

<comment><USER6> You may also want 'whereis' instead of 'which'.

I use cope to colorize my output, which makes 'which' useless to me for most common commands, but 'whereis' still works.

Edit for examples:

        $ which ip
        /usr/share/perl5/vendor_perl/auto/share/dist/Cope/ip
        $ whereis ip
        ip: /usr/bin/ip /usr/share/perl5/vendor_perl/auto/share/dist/Cope/ip /usr/share/man/man7/ip.7.gz /usr/share/man/man8/ip.8.gz

<comment><USER7> > whereis

Thanks for this! After 14+ years of using Linux almost daily, I had never heard of this command. I learned something new today, so now it's time to go home!

<comment><USER8> Yeah, I recently "discovered" the commands 'whatis' [0] and 'apropos' [1] and my experience learning Linux improved quite a bit.

[0] [https://linux.die.net/man/1/whatis](https://linux.die.net/man/1/whatis)

[1] [https://linux.die.net/man/1/apropos](https://linux.die.net/man/1/apropos)

<comment><USER9> Thanks for passing those on as well!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> TIL: iproute2 has a color, a brief/human mode, and a one-line mode. I think I am going to be aliasing ip -color to ip from now on.

$ ip -br -c a # ip -brief -color address

      lo     UNKNOWN  127.0.0.1/8 ::1/128
      eth0   DOWN
      wlan0  UP       192.0.2.1/24 2001:db8::1/64 fe80::1/64

$ ip -br -c l # ip -brief -color link

      lo     UNKNOWN  00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
      eth0   DOWN     00:12:34:56:78:9a <NO-CARRIER,BROADCAST,MULTICAST,UP>
      wlan0  UP       12:34:56:78:9a:bc <BROADCAST,MULTICAST,UP,LOWER_UP>

<comment><USER11> This is a good reminder that defaults should be simple and human readable.

Advanced options should be behind flags for power users, not the other way around.

<comment><USER12> Indeed. I don't get it why `ip` has -brief which is not a default behavior and why -verbose flag does not exist. Also there could be a -no-color instead of -color flag.

<comment><USER13> Or simply detect when piped and leave the color out, as just about every sane cli tool does it.

<comment><USER14> Spot on. A good pattern is to autodetect what to do by default and yet allow forcing on/off (e.g. --color and --no-color)

<comment><USER15> Agreed. It could be as simple as checking if there is a tty and whether or not we're inside a pipe.

</comment></comment></comment></comment></comment></comment><comment><USER16> When I started learning Linux when it was, I think, 0.99, I appreciated that so many commands where cross-Unix. It was a Unix lookalike. I could watch how something is done on one Unix, type this stuff into my Linux terminal, and get an equivalent result in Linux, and this helped a lot and created a sense of community. Now I see that Linux tears the standards apart, there are more and more obstacles with porting complex applications. More over, we can also see the emergence of "we support Ubuntu only, sorry" mentality - Linux became very diverged. I'm so happy to be using FreeBSD now on all my boxes, with it's init, ifconfig, file system hierarchy.

<comment><USER17> Not to say I would be a great fan of Linux, but I think at this point it's quite clear it's the huge winner of OSes. Nearly all servers run on it nowadays, I think all relevant smartphones (not sure though, correct me if that's wrong), many desktop/laptop computers and even Windows is integrating more and more with Linux.

With such a dominance there is not much point in syncing changes of the standard with other OSes. The moment it works different in Linux that is the new majority standard.

And while a lot more stuff is changed all the time than would be necessary one also can't expect things to stay the same for another 100 years just because they have been like that for a long time.

<comment><USER18> Kernel won, userland didn't.

<comment><USER17> It's not the first time I hear it, but what is it supposed to mean? Is there a single thing that can be called "linux userland"? Also, I doubt that someone combines Linux kernel with Windows XP userland. So in some regard all userland tooling running on the linux kernel might be considered "linux userland".

If I understand the term userland correctly it is a term from kernel developers to say "this is code that doesn't run in the kernel", so it might not be helpful to any popularity discussion at all.

<comment><USER19> > Also, I doubt that someone combines Linux kernel with Windows XP userland.

That's Wine.

</comment></comment></comment></comment></comment><comment><USER20> So, to summarize, ifconfig has to be replaced because it relies on the /proc filesystem and it doesn't handle aliases?

This is easily disproven: ifconfig on FreeBSD doesn't rely on /proc and handles aliases just fine.

It sounds a bit like the whole OSS/ALSA discussion – some argued that ALSA was needed to replace OSS because OSS didn't support muxing multiple simultaneous audio streams, but strangely OSS on FreeBSD did support it, with no need to replace the entire audio API.

<comment><USER21> BSD's ifconfig isn't really related to Linux's ifconfig anymore because BSD has continued development and the Linux fork or version (don't remember which it is anymore) hasn't.

Linux's ifconfig is a part of net-tools ([http://net- tools.sourceforge.net/](http://net-tools.sourceforge.net/)) and the latest release of net-tools, v1.6, was released in April 2001. It's been unmaintained for over 17 years. Some distros began deprecating ifconfig when the Linux 2.2 kernel was released because it lacked features. The Linux ifconfig command doesn't support wireless network devices because they essentially didn't exists when the the command was written. Shit's _old_.

It's like comparing Seamonkey to Netscape Communicator.

<comment><USER22> > BSD's ifconfig isn't really related to Linux's ifconfig anymore because BSD > has continued development and the Linux fork or version (don't remember > which it is anymore) hasn't.

There's a simple solution to the lack of maintenance on ifconfig: Maintain ifconfig.

There's no need to break shit.

<comment><USER21> It's open source. Feel free. I'd expect there are significant architectural differences between Linux and BSD by this point, though, that would make it quite a challenge. Alternately, it might be like adding major new features to Xorg: possible but extremely challenging.

My understanding is that the Linux version of net-tools was based on the BSD software, but I don't know how much code is actually shared between the two projects. It was intended to be _syntactically_ equivalent and support the same features (at the time). You'd probably find it easier to write a net- tools-like wrapper for iproute2.

Yes, someone _could_ have just extended net-tools. But nobody did. Instead, they wrote iwconfig and other tools when they were needed, and then someone decided to write a competing package, iproute2, that did everything. And that package added feature support when they were added them to the kernel, and bugs got fixed. Those didn't happen with net-tools unless each distro took care of it.

[https://lwn.net/Articles/710533/](https://lwn.net/Articles/710533/)

<comment><USER22> > It's open source. Feel free.

I use BSD. And while I would send in patches for ifconfig, I haven't needed to. I have sent in patches for other things.

</comment></comment></comment></comment></comment><comment><USER23> I'm all for the new tools (and actually prefer ip over ifconfig).

However, they _really_ screwed up with ss: the output is really unusable/unreadable.

This really only becomes obvious when you pass the -p flag, where the program information is printed on its own line.

It gets slightly better if you pipe the output through cat: now the program information is printed on the same line, but the column spacing is incorrect instead.

On the other hand it's nice that they kept compatibility, at least for the most common flags (e.g. -nltp does the same thing in both).

<comment><USER24> >This really only becomes obvious when you pass the -p flag, where the program information is printed on its own line.

It isn't on its own line, it's just wrapped so grep works properly.

>but the column spacing is incorrect instead.

ss output is column-based so it is useless to bother with tools like cat for parsing.

ss -p | less -S is the simplest solution for you

<comment><USER23> What? No.

First: Apparently the ss developer(s) decided to finally fix the output in some recent version (it was changed to behave sanely somewhere between iproute2-ss161212 and iproute2-ss180402).

However, if you're stuck with an older version, what I said still stands, and the below applies to those versions:

> It isn't on its own line, it's just wrapped so grep works properly.

While _technically_ correct, that doesn't really matter in any practical sense, because the columns are padded so that the final column containing the program is wrapped onto the next line.

When ss stdout is connected to a pipe it will produce different output: this output is much less wide, so that the program name fits onto the same line as the rest of the columns. But, as said previously, it screws up the alignment of the columns, making it impossible to quickly scan them (using your eyes).

> ss output is column-based so it is useless to bother with tools like cat for > parsing.

What? cat doesn't do any parsing. The only reason for using cat there is to connect ss' stdout to a pipe and thus trigger its different output.

> ss -p | less -S is the simplest solution for you

No. '| less -S' gives no improvement over '| cat', since ss output fits onto one line without wrapping as soon as you pipe it through any other program. An actual improvement would be to instead use '| column -t', which would (mostly) fix issues with misaligned columns.

Anyway, if you can, just use a modern enough ss instead (not sure when it was fixed, but iproute2-ss180402 (iproute2 4.16.0) is definitely new enough), which has sane output regardless of whether stdout is connected to a pipe or terminal.

</comment></comment></comment><comment><USER25> I've lost much muscle memory and skill with newer systems.

When I was younger I had time for deep dives into configs/manuals/googles/mailthreads. These days my job assumes I know all the stuff and ins and outs, not having a good time re-learning everything I already know how to do...

It's not new anymore and gives no joy for learning new things, no time to do it either. It sucks.

<comment><USER26> Yeah I don't buy into the idea that because there were some under-the-hood changes that had to be made, that means the whole application has to be thrown away and a new interface re-written. I don't believe for a second that these developers couldn't have dropped in a new backend and mapped the same commands to it.

Putting a shinier coat of paint on the command line isn't going to attract a wider audience, it's just going to piss off the only people who actually use the command line regularly. The CLI is the last place you want "change for the sake of change".

<comment><USER27> IMO, it's because understanding someone else's code and introducing your own changes is something that requires a considerable amount of experience and knowledge which many new developers have not acquired yet. Instead of trying to take the time to understand how to integrate the changes they're trying to make with an existing project, they create something new practically centered around this new feature and a lot of stuff gets lost along the way.

At the end of the day, it's fine though. It'll either satisfy the needs of people and become a new standard or it will be satisfy edge cases and become the new thing that needs to be deprecated because no-one contributes to the project and the original maintainer has lost interest.

</comment></comment></comment><comment><USER28> While unrelated to subj or that new systemd wave, I want to state that almost all my sysadm skills are lost. Idk who is responsible for this and if they exists, or is it just time going, but I'm not a power user anymore. Long-term skill investments without a profession are so meaningless – ten years and you stare at the screen with no idea what to do. That was hard time and now it is all for nothing.

<comment><USER29> If you were a productive unix sysadmin in 2008 you are a productive unix sysadmin in 2018. Its just that Linux is no longer unix-like and you've switched from using, perhaps, Debian install media in '08 to FreeBSD install media in '18\. Its not really that big of a problem. Its much easier and more productive to switch to FreeBSD than to switch to ... whatever it is Linux is becoming.

<comment><USER30> > If you were a productive unix sysadmin in 2008 you are a productive unix > sysadmin in 2018.

Unless you mention Perl to someone now, and that someone might be 10 years younger but still your manager, and they look at you like you just spoke greek.

<comment><USER31> Ha ha! Perl has become the shit test for whether I feel like dealing with certain people. "Oh, you don't use Perl?...." Not everyone, just certain ones.

</comment></comment></comment></comment><comment><USER32> It's pretty clear that ip is the superior and more modern tool, i believe they could work on the presentation layer of the software tho... its output pales compared to ifconfig, as other peers have stated.

that's what really gives us grumpy old sysadmins the kneejerk reactions. every time i log into a system and i have to tipo "ip a" i need to stop and try to slowly decode the unformatted soup letter that is presented instead of a nicelly formatted table like on ifconfig.

<comment><USER31> I hear this argument a lot: this or that is the "more modern tool." The problem is I almost never see the benefits in the same way I can tell how, say, a battery-powered nail gun is superior to hammering hand-held nails. Usually it's just a hammer with a cross peen instead of a claw, painted a different color.

</comment></comment><comment><USER33> Isn't the described mismatch between "reality" and what ifconfig reports once again a case of systemd (networkd) not exposing IP aliases in the traditional way, and replacing established network concepts by it's own stuff? Meant as a genuine question rather than trolling (though I know I'd hate to bow to whatever systemd comes up with rather than just using ifconfig which has worked since the begin of times) eg. there might be a material problem here in how network interfaces are presented by ifconfig.

<comment><USER34> No. The Linux kernel has two APIs, and has had since before systemd even existed. ifconfig uses the ioctl() API, which presents the concept of alias IP addresses in one way. ip uses the netlink API, which presents the concept of multiple IP addresses per interface in a different way. M. Siebenmann did include this point.

* [https://sourceforge.net/p/net-tools/bugs/12/](https://sourceforge.net/p/net-tools/bugs/12/)

* [https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=359676](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=359676)

<comment><USER35> This begs the question of why the kernel doesn't allocate an alias for backwards compatibility when adding IP adresses through the netlink API.

<comment><USER36> I think they are fundamentally different things. Correct me if I'm wrong, but I think a netlink alias is just an additional address and an old-school alias is more like a virtual interface.

</comment></comment></comment></comment><comment><USER37> While this article makes a case for the new command, the reality is simple. I personally learned ifconfig continually in my life and so I learned how to read it and interpret what it was trying to say. It output its commands in a fairly easy to parse way. The new command, while I am sure is progressive and forward thinking, feels clunky. I often have to try to remember the name of the command itself as it is not obvious. It is a good example of a command not really doing the function of making the job easier on the network admin in favor of accommodating new conceptions of features. All the thousands of hours I spent on ifconfig are, basically, useless unless I want to be antiquated and have useless debates about standards. Basically, I just want the computer to do what I tell it with as little extra trouble as possible.

<comment><USER38> I feel like systemctl and journalctl are the same way. They are terrible commands with awful usability. Having a full process control system is nice and helpful when writing a package once for several platforms, but I wish something had caught on that had better usability and didn't try to do everything from login management to filesystem mounting, but rather just process management.

Where as someone could probably write a newer drop in ifconfig that uses modern kernel APIs, several people have tried to for systemd and it's just so massive no fork can keep up anymore and almost all have been abandoned.

<comment><USER39> Are they really "terrible" with "awful usability"? In my day-to-day debugging, I do find `journalctl` _much_ better. Let's see a couple of quick examples:

\- Show logs for the current boot: _$ journalctl -b_

\- To get all errors that are of priority level ERROR and worse: _$ journalctl -b -p err_

\- Show me logs for a given binary: _$ journalctl /usr/sbin/libvirtd_

\- Or via its unit file: _$ journalctl -u libvirtd -l_

\- Want to query all the errors for a given disk? Here we go: _$ journalctl /dev/sda -p err_

And so on...

<comment><USER40> Yes that is an awful soup of switches that should either be separate commands or usages of existing Unix tools.

<comment><USER41> Ok, then you've traded one command with switches for multiple commands each with their own set of switches (and almost certainly following different switch 'standards'). I like systemctl/journalctl for cleaning up that mess, even if it requires me to learn how to use them.

</comment></comment></comment></comment></comment><comment><USER42> I've never understood the purpose of IP aliases like the "secondary em0" the author is setting up with systemd.networkd. These aliases are practically useless, you cannot bind() to them without knowing the IP, you cannot use them in firewall rules, you cannot setup dhcp for them etc. What are people using them for?

I'm not sure what the low level difference is between an alias like in the article, or a "eth0:1" type alias (made with ifconfig eth0:1 xx.xx.xx.xx up), but the "eth0:1" type alias seems infinitely more useful.

This is also a major deficiency of the Ubuntu 18.04 netplan implementation, it can only do the systemd.networkd type aliases and not the "eth0:1" type ones. What gives?

<comment><USER43> > What are people using them for?

In my case, keepalived VRRP floating addresses.

<comment><USER44> I've used eth0:xx style aliases for that for a decade with no problem. Do you know what the difference is?

<comment><USER45> Yeah, your eth0:xx is just a label (a tag of sorts) attached to the entry. Otherwise, they're exactly the same thing.

You can even add an address with `ip addr add' that will be visible to ifconfig.

</comment></comment></comment></comment><comment><USER46> this makes it sound like the only thing ip does is replace ifconfig which is not the case. It is more like like a go to application to manage the network stack to some degree. You can set up various tunnel interfaces, vlans, routes, routing rules, IPsec policies, network namespaces and more. Learning how to deal with it gets you quite far. Learning how to read the help output is often enough to understand everything and definitely worth the effort, even if all you want to do is to show the assigned IP addresses...

I also appreciate very much the mostly consistent syntax for various sub commands. Its often an easy guess to know how to do what...

<comment><USER47> _Learning how to read the help output is often enough_

I find the 'ip --help' is virtually incomprehensible, and the man page no better. There's no explanation about _what_ the tool can do, only some machine-readable formatting of the syntax expected. This kind of documentation is useless IMO, it's actively hostile to new users.

<comment><USER48> The tool allows one to manipulate kernel objects more or less 1:1, so documentation and help of 'ip' and 'tc' is adequate enough if you know what those kernel objects are and how they behave, but it won't help if you don't know anything about linux networking or traffic shaping in the first place.

<comment><USER49> What's the best way to learn these things?

<comment><USER50> LWN ( [https://lwn.net/Kernel/Index/#Networking](https://lwn.net/Kernel/Index/#Networking) ), LWN + kernel documentation ( [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/networking) ) , more LWN + iproute2 source/news/commitlog ( [https://git.kernel.org/pub/scm/network/iproute2/iproute2.git...](https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/log/) and [https://git.kernel.org/pub/scm/network/iproute2/iproute2.git...](https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/log/ip) << basically the names will give you what to search for on LWN ), and a bit more reading ( [https://www.netdevconf.org/](https://www.netdevconf.org/) )

... and trying them (the features) out. In VMs and in other network simulators. ( [http://mininet.org/overview/](http://mininet.org/overview/) comes to mind, but simply using Vagrant / Virtualbox is okay )

Also, networking is very standardized (duh :)), so if you follow network related stuff ( [https://www.reddit.com/r/networking/](https://www.reddit.com/r/networking/) ), you can sort of get a feel for what might come to the Linux kernel.

LWN is still the best in this regard, because it deals with new developments, so reading the archives will tell you what might be in the kernel.

Furthermore, since nowadays everything is kube-cloud-virtual-container-open- netes-stack, looking at network developments for these technologies will get you in the know. (Seemingly bonkers stuff, like BGP for containers is now bog standard with things like Calico. Running a full switch in kernel with an awesome distributed overlay network for "cloud" without OpenFlow? OVN by OVS got your back. Doing all this fast? DPDK is uber fast, but XDP is just so conveniently clever.)

Plus there's the datacenter networking stuff, like TRILL/SPB ( [https://networkingnerd.net/2016/05/11/the-death-of- trill/](https://networkingnerd.net/2016/05/11/the-death-of-trill/) ), but those haven't got integrated into the kernel, because the aforementioned Calico, OVN and other overlay stuff.

Oh, and the best way is to keep asking questions!

<comment><USER51> I'm sure you mean well, but this comment epitomizes the problem. Formerly, Unix was fairly modular, open to comprehension, and had excellent documentation guiding the user. Now, everyone who isn't a paying Red Hat support customer is not just on their own but thrown to the wolves.

<comment><USER50> But why would anyone be on their own in the age of stackoverflow and a thousand other user support avenues.

And there are good books and endless awesome posts/blogs about Linux. The new low level stuff is not covered as well obviously. (And I think it's a shame devs don't communicate well, but they are not perfect, nor they are paid for writing good docs, only for code.)

Furthermore, was the modularity of Unix ever really exercised? Are there success stories replacing dd, cp, ls, or parts of lower level stuff?

</comment></comment></comment></comment></comment></comment></comment><comment><USER52> The real reason there is drift in Linux tooling is because there are two communities making tools for Linux (GNU and Linux Foundation associated projects) and the two groups seem to find new reasons to hate each other every year. It's a dumb reason for tooling to drift, but an understandable reason. I have a feeling that ifconfig and netstat will keep up fine, but that the party line will be that they are deprecated.

<comment><USER31> Yeah, SysV init is still around, udev has been renamed eudev and is still being developed, etc. Don't tell anyone in Linux officialdom, though. It upsets them.

</comment></comment><comment><USER48> What's all the fuzz about this "sudden" change? iproute2 is part of linux (kernel) since 1999 or so.

<comment><USER53> It promptly got filed under "ah, learn that one day", then after coming up enough times got relegated to "ugh, stop bothering me about it, I'll get to it eventually" and everyone has been un-motivated-ly unimpressed about it ever since.

I think.

<comment><USER54> FWIW I can usually never get ifconfig to do what I want it to, but with ip it's usually fairly straight-forward.

</comment></comment></comment><comment><USER55> This is slightly off topic. Netflix has transformed the output of netstat to have more immediate visibility. Its good to have something like this.

[https://imgur.com/a/g8P2Nm2](https://imgur.com/a/g8P2Nm2)

<comment><USER36> That's pretty neat actually. Thanks for sharing.

</comment></comment><comment><USER56> Why did they have to make the output of `ss` so cumbersome? I often end up installing the legacy tooling just so I can have `netstat`

<comment><USER57> It seems like a missed opportunity not to have a JSON (or other explicitly machine readable format) output option for easy scripting use through jq. Every time I need to craft a grep regex to get some trivial piece of information from one of these tools, I feel there's a bug waiting to happen (and I'm usually right).

<comment><USER58> ip has a --json flag: [https://github.com/CumulusNetworks/iproute2/commit/5df607725...](https://github.com/CumulusNetworks/iproute2/commit/5df607725928d532a3b7e5095c04e943b2c3ce7f)

<comment><USER59> Hmm, not for everything, apparently. It works with "-json addr" or "-json link", but not with eg. "-json route" or most other things i've tried.

</comment></comment></comment></comment><comment><USER60> I noticed some shortcomings in ifconfig (only shows the first ip assigned to an interface if a NIC has many) so in some senses i see why it had to be updated, by i see no logical reason why both the command and the syntaxes had to change? Why not stick to the parameter standard at least?

<comment><USER61> if you're changing underlying functionality, you'll have to change at least some of those parameters ("show me the first IP address" of an interface might be a contrived example). So now you have the option to slightly change the parameters and keep some, but not all of the behavior, maybe even in a slightly different way or you can have a clean break and clean up the old parameter list with all its accumulated cruft and go for a designed and thought-out interface.

</comment></comment><comment><USER34> M. Siebenmann's actual main point, ignored by much of the "I do/do not like ip/ifconfig." discussion here, is that it is valid to replace ifconfig because the standard output of the command is an interface contract that is set in stone because of people using it in scripts.

I disagree, on two grounds.

Firstly, the ifconfig commands in the BSDs are existence proofs that this is not so. The BSD people actually _have_ modified ifconfig to keep up with changing kernel networking abilities, and one will find the (say) FreeBSD ifconfig of today having a lot more functionality than the Linux one. The BSDs, by their very natures, kept their ifconfig tools aligned with the rest of the operating system as it changed.

* [https://freebsd.org/cgi/man.cgi?query=ifconfig](https://freebsd.org/cgi/man.cgi?query=ifconfig)

* [https://linux.die.net/man/8/ifconfig](https://linux.die.net/man/8/ifconfig)

* [https://unix.stackexchange.com/questions/319350/](https://unix.stackexchange.com/questions/319350/)

Secondly, an aversion to breaking (badly designed) scripts is isn't really the reason that ifconfig hasn't been changed. The reason that ifconfig hasn't been changed, as evident from the net-tools bug and other discussions of this, one of which I have hyperlinked elsewhere in this discussion, is more to do with (purportedly) _doing things portably_ and _not having two disjoint code paths_ , one for Linux using netlink and one for everything else using ioctl. Two code paths and code that was not portable to other operating systems would be the result of adding netlink capability to net-tools's ifconfig.

That reason does not itself hold water, however. The net-tools package is highly Linux-specific _anyway_ , in the first place, so arguments about its portability are moot. Given that, the _actually expressed reason_ for not doing this given by the developers themselves (as opposed to the differing reasons inferred by people other than the developers, the most often given one of which is directly contradicted by git repository activity as recent as 2016) founders.

* [https://github.com/ecki/net-tools/commits/master](https://github.com/ecki/net-tools/commits/master)

One of the more disappointing things about Linux's ifconfig is that this:

        # ifconfig lo inet6 ::1
        Don't know how to set addresses for family 10.
        #

is a fairly trivial oversight in a case statement in the code, a missing case for AF_INET6, rather than a fundamental design or implementation problem, and doesn't even need the netlink API to fix.

* [https://sourceforge.net/p/net-tools/code/ci/master/tree/ifco...](https://sourceforge.net/p/net-tools/code/ci/master/tree/ifconfig.c#l978)

* [https://sourceforge.net/p/net-tools/code/ci/master/tree/ifco...](https://sourceforge.net/p/net-tools/code/ci/master/tree/ifconfig.c#l807)

<comment><USER62> (It took me a sec to realize you were using the verb "founder".)

Excellent point.

</comment></comment><comment><USER63> Maybe in new tools they should randomly change the formatting every run so that people can't parse the output.

</comment><comment><USER64> I find it more frustrating that network configuration tools seem to be added in layer after layer, like with the new netplan took in Ubuntu. To me it seems more complex than it needs to be.

<comment><USER65> _new netplan took in Ubuntu_

Having fought that monstrosity very recently, I completely agree. The homepage of its site looks more like a marketing blurb than anything else, and everything about it has an unpleasant "enterprisey" feel to it. I don't care about YAML or "abstract network renderers" or whatever buzzword-compliance bingo it claims to support, I just want to configure one NIC for one static IP.

The fact that Windows' networking configuration is actually _easier_ than on "modern Linux" should be a sign that something has gone horribly wrong.

</comment></comment><comment><USER66> Well "replace" sounds very serious; but in fact iproute2 has been here long enough to have replaced stuff already. I didn't really consider myself to be a "grumpy old admin", but now I do, having used ip a lot back in 2003. I mean. 14 years have passed since I first used a mature! thing. And some people call ip fresh...

</comment><comment><USER67> I've perceived an acceleration in the rate of these changes in the last 2-3 years, and have started to put at least some of it down to Linux having annihilated most of the competition in the UNIX server space.

With Solaris now headed for retirement and most of the rest of the SysV ecosystem having collapsed over the preceding 20 years or so, it makes it easier for companies like Redhat to "innovate" in new directions with less pressure from developers and sysadmins alike.

I'm not sure how much of this is just my imagination, but the rate at which "old world" UNIX commands and subsystems are being replaced or supplanted in Linux certainly seems to have increased.

I agree with the author that some of these changes are forced by the development in the kernel itself, but I consider that part of the same phenomenon I guess.

</comment><comment><USER68> Bookmark [https://dougvitale.wordpress.com/2011/12/21/deprecated- linux...](https://dougvitale.wordpress.com/2011/12/21/deprecated-linux- networking-commands-and-their-replacements/)

<comment><USER31> This sort of thing is the reason I never use Linux for anything more serious than a laptop. It's impossible to know when a new table like this will become necessary to do really basic stuff that I already learned how to do years ago.

</comment></comment><comment><USER69> I am not sure it is such a big deal, the old stuff are good enough for the majority of cases, I reckon. He has probably a good point about performance, but pain versus gain I am not sure it makes a lot of sense, on average.

</comment><comment><USER70> Ok. Fully admit, old unofficial sysadmin here (50, started with computers at 10 - and I don't work as a sysadmin, but often wind up helping our sysadmin who has less experience). ifconfig, netstat, lsof are some of my top go to tools. I haven't learned the iproute suite of tools yet, but this article is prompting me to start doing that. It will be hard, my memory is fuzzy on when net-tools commands first came out..I remember using Slackware in mid 90s, but don't remember if they were in there yet, but I think I've maybe been using them for 20 years, or close to it.

</comment><comment><USER71> Back in 2005 I was actually wondering why ipsuite wasn't part of standard Debian, tbh, which at the time was very big in the networking world

</comment><comment><USER72> So [https://netplan.io/](https://netplan.io/) was invented to replace them right?

</comment><comment><USER13> More and more it seems that smaller users of Linux gets the shaft to placate the needs of the cloud behemoths...

</comment><comment><USER73> the output of 'ip address' is so much harder to parse, visually :/

</comment><comment><USER74> As I opened this article, I thought "I bet this is going to be related to some Goddamned systemd change".

And sure enough, about halfway through:

> _This interface has an IP alias, set up through systemd 's networkd._

The amount of pain and headache this init-kitchen-sink-wannabe- _thing_ has caused me day-to-day is incalculable.

<comment><USER34> Of course, that does _not_ say that this was a systemd change, and reading this very discussion at [https://news.ycombinator.com/item?id=17151686](https://news.ycombinator.com/item?id=17151686) shows that you lose your bet.

</comment></comment><comment><USER75> ifc TAB ENTER is just so much faster then ip addr.

<comment><USER76> I'm still used to typing ifconfig just out of muscle memory, but ip seems to very loosely match

"ip a" will be matched the same as "ip addr" or "ip address"

Learning that made me much more accepting of the new command

</comment></comment><comment> a-dub systemd is like the rajneeshpuram of Unix. first it's the init scripts, now they want to take away ifconfig.

ask the people of Oregon how this will all work out...

</comment><comment><USER77> "... an ongoing effort to obsolete the old, cross-Unix standard network administration and diagnosis commands of ifconfig, netstat and the like and replace them with fresh new Linux specific things like ss and the ip suite."

Old does not mean bad but Linux chooses that path as it moves further away from UNIX and being a Unix-like system in its pursuit to be Windows.

<comment><USER78> > "Old does not mean bad"

It doesn't automatically mean "good" either.

> "in its pursuit to be Windows"

Would you please elaborate?

<comment><USER79> Windows subsumes a lot of small network daemons into a monolithic process called SVCHOST.EXE.

Systemd does a similar thing.

<comment><USER80> What are you talking about? Systemd (pid 1) just does socket activation, it has no high level functionality. Yes, there are related programs like systemd- timesyncd, but they are completely separate processes, and can be managed separately and even omitted altogether.

Now, traditional BSD inetd had discard, chargen, echo, ... protocol support, which means that it was actually more integrated that systemd.

</comment></comment></comment></comment><comment><USER81> the argument that applications using standard files must be update to another api is BS.

the kernel should just map the faster api on those standard file descriptions instead... but then, the "old" files were not part of a standard to begin with... but then again, the standard, whatever it is, was never designed but agreed upon after being in use by enough people.

I have no idea what to make of this. I guess I am just happy that people are moving things forward, whatever the direction.

</comment><comment><USER82> ifconfig is obsolete for how long? 14 years or so? :)

</comment><comment><USER83> Yeah damn idiots broke ifconfig so it already misses some interfaces. Just say no to this insanity.</comment>


Ask HN: What's a good developer's resume look like? - rachel-ftw I'm a newly self taught full stack web developer. My background is graphic design and marketing.
WTF do I put on my resume? Anyone have advice for writing a technical resume? Any examples of great resume's to share?
Thanks! <comment><USER2> One page. One page. One page. Only one page. No more pages. Don't do it. Only. One.

Remember that when I'm reading your resume I'm _reading_. Write it to tell the story of who you are and who you want to be as well as you are able. Cut out things that don't fit that story-- you can always pleasantly surprise them later with the extra skills.

Unless you've worked on something that got put on a billboard near my house, I don't know what your project's codename was. "Developed key metrics for Project Hazel" translates to "measured brown thing" in my mind.

Many engineers find it distasteful to describe their contributions in glowing terms. But that's the game and because I can't tell you're being demure I'm going to turn the brightness down two notches on your resume same as everyone else's. So amp it up until it feels gross (and not much further).

<comment><USER3> I have read literally hundreds of thousands of resumes and I implore to ignore this terrible advice.

Your entire career jammed into a single page - not a good idea.

How many really good stories have you read that are one single page? Your resume is a story about you that follows a well known general form.

Presumably you have worked hard and put in the work - it will take a few pages to explain it in a clearly set out manner. Explain your education, what you have done, where you have worked, your interests where you feel it relevant. Space it nicely, choose an attractive font. Your resume should not be full of technical keywords, and there is little point in describing every technology you have ever touched (see this [http://supercoders.com.au/blog/theskillsmatrix.shtml](http://supercoders.com.au/blog/theskillsmatrix.shtml)). Illustrate the most interesting aspects of your work over the years with a short yet clear description of things you found particularly interesting.

Don't submit a 20 page thesis but as for "one page or nothing" \- from someone who does the reading and assessing of resumes - this is bad advice. Don't sell yourself short - years and years of work does not boil down to one page unless you wish to belittle yourself and your career.

<comment><USER4> Why can't a long career be boiled down to a single page?

It seems to me the shorter the better. The best resume is just your name.

[http://www.landsnail.com/apple/local/steve-jobs- resume/Resum...](http://www.landsnail.com/apple/local/steve-jobs- resume/Resume.html)

PS - hundreds of thousands of resumes - wow! How'd that happen? Forty resumes every single work day for twenty years?

<comment><USER3> I am a recruiter - I have been doing it for more than 12 years. Forty resumes in a day is a very slow day. I personally wrote my own recruitment resume review system to enable me to read resumes extremely fast if I choose.

<comment><USER5> I'm a self taught dev with a ba in math and 2yrs job experience but have for the past two years worked in restaurant while chasing my music dreams. How do I best go about putting this in my resume? I have thought about a projects section but it doesn't really cover two years. I feel job ready but am not getting through to people. Thanks

</comment></comment></comment></comment></comment><comment><USER6> The top answers are giving good advice, but I don't think they answer the real question: "How do you write a resume when you have no professional work experience or CS degree?"

DO

Talk about your projects - they should have a short description stating what it was, the technologies used, and any cool things you implemented (say, some special algorithm to do XYZ thing.) It should have bullet points in the same way you'd treat a past job you had. I've seen one page resumes that were 80% projects and 20% everything else.

Use your graphic design background to help you. The easiest way into a development position would probably be to find a place that will let you implement your designs in HTML/CSS. Then you can sneak your way onto the development team.

All you need is a foot in the door.

DON'T

Go into too much detail about anything unrelated to the job you're trying to get. Generally speaking every single line of your resume should scream "hire me" \- anything that's lukewarm should be cut.

MAYBE

If you can get into a top coding bootcamp, you might be able to accelerate your career by a few years. It's really difficult to get your first job, and chances are you won't be paid that much for the privilege. If you're paid 15-20k more per year from the start, that alone pays for the cost of an expensive bootcamp.

</comment><comment><USER7> 1\. Include relevant skills and keywords because many resumes will be processed by H.R./machine doing simple keyword matching.

2\. Try to keep it short(1 page). Resumes are usually not read but skimmed. Most hiring managers are given 20-50 resumes and very little time to decide who to pick for a phone screen.(typically 3-5 minutes or less)

3\. Don't be afraid to use an interesting conversational writing style. So 80% of resumes read like a badly translated instructions manual from a 1970s VCR.

4\. Structure your resume to put your best qualities first. If you went to a good school or got a good GPA put that on top. If you kicked but at your last job and got promoted a lot put that at the top.

</comment><comment><USER8> My best advice is to have a personality shine through. It will lose you some interviews, but gain you others, As a new engineer you really want to focus on strongly appealing to a smaller number of people, than to slightly appeal to many.

<comment><USER9> I must confess I'm a bit biased because I work in that space (Enhancv cv builder) but what we've seen time and time again is that people who put not only their personal achievements, but their personality as well, land jobs that they are a lot more happy with. This varies from industry to industry and country to country of course, but I do think there is a general trend there.

<comment><USER10> Do you notice if people with such resumes take any longer in finding their place? Do you also have any examples/patterns you could provide? I'm curious if it takes a certain kind of person to have a resume with personality that stands out positively.

<comment><USER9> Its more of aligning of values between the applicant and the reviewer - if you have some of your personality showing through from your resume, the reviewer can have a "gut feeling" about you.

<comment> rachel-ftw I love this advice because culture fit is one of my biggest concerns. As a queer woman entering the field (if it's possible) I'd want to avoid being somewhere that has toxic culture. I think that advice is really on point: don't sanitize yourself out of your personal brand so that companies that don't fit you will self select out. Again, if possible. :<

</comment></comment></comment></comment></comment><comment><USER11> If you've had no commercial work experience, it's a little tough to craft a "good developer's" resume I'd say, so I would focus on things you've created while self-learning with demonstrable websites, as well as clearly list all the community sites/forums/lists and whatnot you're involved with and any contributions made.

In a cover letter I'd stress how well you can pick up new technologies and become useful to the client/business very quickly, how passionate you are about keeping up to date with technologies, and somehow indicate you're not a Machiavellian-ego-consumed prima donna that won't shrink when your logic/work is challenged or when the stress hits.

Employers it seems to me these days are asking much more than they would of any other profession i.e. do electricians get asked to trot out a list of sites they've worked on in the past, or are expected to work after hours on open source projects they can demonstrate when they next go to a job? It's tough for recruiters to understand what you're good at, so it becomes a bit of an art to actually letting people know you're good at such-and-such.

I haven't had any problems being self-taught in the development area - <AUTHOR> you've got a few engagements under your belt and referees. Getting that first one is the tough bit, if you can prove yourself after that, things get easier and easier.

<comment><USER12> > Do electricians get asked to trot out a list of sites they've worked on in > the past, or are expected to work after hours on open source projects they > can demonstrate when they next go to a job?

They're licensed, bonded, and insured.

If you agreed to let the government and insurance companies do your approval, I'm sure many companies would let up a bit on their requirements.

<comment><USER11> I was unfairly targetting electricians there I think. I just feel like sometimes the hoops developers have to go through are a bit more strenuous than some other professions, if you accept it as a profession.

</comment></comment></comment><comment><USER13> Your resume architecture will change dramatically with every stage in your career. It is not critical for a resume these days to be only one page, but it would be silly for you to include an entire detailed education on a resume for an industry developer of several years.

Your content should be increasingly selective with every position you get, and every award you get, and every a commendation.

It should be very easy for employers to identify what conversation pieces you are ready for. This can be provided in the form of a side project list, a neat contributions list comma a extracurricular, or presentations you provided. Anything on your resume should be something that you can talk about in great detail. For every interview that I've had, I re-read through code Snippets of all projects I have listed. When Review Time becomes greater than necessary, I delete projects from my resume.

You should also update your resume monthly, you often don't understand or remember what new things should be added to your resume unless you do this as a rolling task. This can accumulate until you are finally applying for jobs, where you would then remove things you no longer find interesting or that are irrelevant. This will give you the opportunity to add non technical, yet important things to your resume.

</comment><comment><USER14> For people that are about to write their first resume ever, I recommend to look at the advise and sample resume here: [https://careercup.com/resume](https://careercup.com/resume)

</comment><comment><USER15> Two points.

1\. I don't understand people who say "I don't have time to read two pages, so please send one". Why not just read the first page then and only move on to the second page if you're intrigued and want more details?

2\. Legibility has a myriad of variables. I wouldn't rather read a CV that shaves off some whitespace that'd otherwise make it more delightful and easier to go through, in order to artificially shove in necessary content into the dimensions of Letter/A4.

<comment> rachel-ftw +1 for managing white space for legibility/easy scanning

</comment></comment><comment><USER16> So, honestly, my resume is pretty lackluster compared to most. It's simple and factual. I have 4 sections: a summary (a couple of sentences), my experience, my education, and "proficiencies" (coding languages, software, tools I know, etc).

You can see it here: [http://russelluresti.com/resume/](http://russelluresti.com/resume/) (it prints basically the same way).

Most of what you hear in terms of resume rules is kind of nonsense. The whole "one page only" thing I think works fine for the start of your career, but I'm not going to limit myself to it. I also believe that talking about specific metrics, while it can be helpful, is really the opposite of what matters.

I believe that what got me my first couple of jobs was my cover letter (or the content of my website - they're usually pretty similar). Resumes don't usually excite people. There are a few extremely clever resumes out there that make you take notice, but the rest are usually a collection of bullet-points, and bullet-points aren't exciting.

If you want to to get noticed, don't tell people WHAT you do (every resume does that), tell people WHY you do it; this is what will make you stand out and has a much better chance of creating excitement. Specifically, talk about ethos. If you and your potential hiring company align there - on your beliefs and motivations - they're going to be excited for you.

This generally goes against the normal advice people give for cover letters where they tell you to focus on talking about what you can do for the company and how you can be an asset. That advice is bad advice for this community (development, design, anything at all in the creative field). Instead, convince them that you care about the same things; that the passion that drives them as an organization is the passion that drives you as an individual. That's how you stand apart from your competition.

And if you can't, with a straight face, say how your values align with the values of the company you're applying to, you're applying to the wrong company.

Note: I originally started communicating this way on my own material after watching this - [https://www.ted.com/talks/simon_sinek_how_great_leaders_insp...](https://www.ted.com/talks/simon_sinek_how_great_leaders_inspire_action)

<comment><USER17> There's a typo in the last section (HMLT)

</comment></comment><comment><USER18> Here is some advice that works for writing a resume, but can be applied to anything.

1) Put yourself in the shoes of the one reviewing your resume. What does he want do read? What doesn't he want to read? What is he looking for? How does he select candidates based on all the resumes he gets?

2) See how your education and experience can help the company that reviews your resume. Don't think about yourself, think about the value that you can offer, and make it clear.

I once had experience in both Java and C++, about equal. I had 2 resumes, both correct. But on one the Java part was more obvious, and on the other the C++ part. So it depended on what the company was looking for whether I would send the one or the other.

<comment> rachel-ftw That's a good idea, different resume's tailored to different types of jobs. And the empathy piece of putting yourself in someone else's shoes. I'm finding it challenging to do that. I know tech leads as friends, but this is the first technical job I'm going after, so what does that person want?

</comment></comment><comment><USER19> _I 'm a newly self taught full stack web developer_

I daresay the only role of your resume should be to convince someone to click on a link that shows the amazing work you've done. Nothing you write is going to mean anything, comparatively.

<comment> rachel-ftw That's a good point. It's just enough to get them to click through to the github/portfolio.

</comment></comment><comment><USER20> Not a direct answer to the question but a common mistake I see in resumes is including a "grocery list" of technologies. You don't need to enumerate every single technology you have ever used, better to keep it short and focused.

If I'm hiring a React developer, I'm more likely to pay attention to the resume that lists "JavaScript, React.js, HTML/CSS" than the one that lists "OS X, Subversion, Git, MS Excel, Linux, MongoDB, React.js, Ruby, HTML, XHTML, HTML5, CSS 2/3, PowerPoint, ASP.net, MySQL, Agile (Scrum/XP), PHP, Heroku, Bash, Node.js".

<comment> another-dave I disagree, though like with everything it needs to be easily scanned & laid out well. I've had a few where people have put them in categories — Expert: A, B, C; Intermediate: …; Learning: … — which personally I've liked.

Without the list — if you don't have at least familiarity with, e.g. Bash/Git, it's a big minus & I'd prefer to know that before the interview stage.

Sometimes people go for concise & hit sparse, which is definitely worse :) Even on a two-page CV, you could fit in a version of this if you remove a "Personal Statement" or "References available on request" (I'd hope this is a truism!)

<comment> rachel-ftw It seems like there's a balance somewhere. Enough to communicate versatility and proficiency, but not enough to loose the signal in the noise. I like the leveling idea (expert/intermediate/learning). I'm all about taking out things that feel superfluous like the personal statement (isn't that the cover letter?) and references upon request (if they ask for references of course I'll give them, who isn't going to give references upon request?).

</comment></comment></comment><comment><USER21> Keep it short. One to two paragraphs with summary / goals / why you want to work there in the email body or in a cover letter helps as well.

In the CV itself, max two pages, bullet points with relevant technologies, most recent/relevant work experiences, URLs for Linkedin / github / projects.

</comment><comment><USER22> > WTF do I put on my resume?

Start by changing that to "What do I put on my resume?".

Your resume does not end at the bottom of an A4 or Letter page. Your resume includes how you present yourself, and ill-placed vulgarities are far more telling than "HTML, CSS, Javascript, PHP" are on a few lines of ink.

<comment> rachel-ftw That's a good point. I've never been agains making well placed swearing part of a professional brand. It tends to communicate honesty* and takes people's walls down.

Though I'll admit that particular WTF doesn't add anything, and was mostly an expression of the frustration of embarking upon converting my existing marketing/design resume to reflect my current skill set.

*source: [https://www.gsb.stanford.edu/faculty-research/publications/f...](https://www.gsb.stanford.edu/faculty-research/publications/frankly-we-do-give-damn-relationship-between-profanity-honesty)

</comment></comment><comment><USER23> I suggest looking at "Who wants to be hired?" posts for ideas. [https://news.ycombinator.com/submitted?id=whoishiring](https://news.ycombinator.com/submitted?id=whoishiring)

<comment> rachel-ftw yasss _high five_

</comment></comment><comment><USER24> One of the things recruiters seem to like about mine is a cloud tag of the technologies.

<comment> rachel-ftw That's a great idea, I hadn't thought of that. Thanks!

</comment></comment><comment><USER25> Exploring Argentina data and there are people who speaks French and English (as native tongue) is very unlikely, also Language: indigenous and Religion: Protestant, is odd

</comment><comment><USER26> A perfect resume looks exactly like the resume of the person that is doing the hiring. So they would go like "Aha... aha... you're hired!"

<comment><USER27> I couldn't agree more. Being a dev who sifts through resumes in a company without a designated HR, I find myself subconsciously search for people who closely resemble me (Not in terms of knowledge/experience. I like to work with people who're better than me) in terms of approach, philosophy and influences.

</comment></comment><comment><USER28> Willing to share if you share your email. Wouldn't say it's great but I've been around the block and it's landed me multiple offers.

<comment> rachel-ftw awesome, thanks! ... this is my first time interacting with HN, is it a smart idea to share emails in comments? ...?

</comment></comment><comment><USER29> Does it matter if I have written a somewhat famous tutorial on web development and started a YouTube channel which has decent views?

I have got +ve response on both

<comment><USER30> That might depend on the person doing the interview, and perhaps how you put it on your CV. If you list some hobbies on your CV, and you put something akin to "Maintaining youtube channel" or "Writing tutorials" then I would know that you seem to have some passion for the field outside of work.

I am not saying that everyone _needs_ to do something related to programming in their free time, after all it is their choice if they do or not and they can be great engineers without doing so. Yet for me, it shows at least an interest or a passion.

Furthermore what you are doing is communicating ideas about software development. That's a plus in my book as well, as communicating ideas clearly is important. It'd also show you are willing to teach coworkers in a positive way.

But it might depend on the interviewer.

<comment><USER29> Thank you for your thoughts! I agree that more than what we do, it matters how we represent them.

</comment></comment></comment><comment><USER31> One page is more than enough to say who you are, what you did in the past, list your main present skills and give a couple of best references.

</comment><comment><USER32> Keep it short, use plain text, include urls for your public work (repos).

<comment><USER33> Do not use plain text in the sense of .txt or even .md. Do use plain text in the sense that the text should be formatted but there should be no graphics except (optionally) the occasional horizontal rule or (if you have a strong enough graphic design background) a vertical rule dividing a sidebar.

Do distribute as PDF instead of MS Word or equivalent.

<comment> rachel-ftw I have a background as a visual designer, so this is good advice. I used to have very visual resumes because it fit the field, but I'm realizing that would be not such a great thing in engineering.

</comment></comment></comment><comment><USER34> I just export my LinkedIn profile as PDF, references and all. Have no trouble whatsoever landing great jobs.

<comment><USER35> It's a pity LinkedIn labs killed that.

<comment><USER34> What do you mean "killed that"? The option is still there, it's just not easy to find. Click on the triangle next to "View Profile As" button.

</comment></comment></comment><comment><USER36> Just remember what a CV really is - it's a sales brochure to get you an interview. Nothing more, nothing less. Once you understand this what to include and what to leave off becomes obvious.

<comment><USER37> A CV is not a resume and mistaking the two is a fatal mistake that I see far too frequently. You might just be using it as shorthand, but I've seen far too many friends who thought sending in their 5-page CV for industry job applications was normal.

<comment><USER38> Worth noting that this can be a regional difference. In the UK, the terms are synonymous, (though CV is much more common), and the CV is much more in line with the US idea of a résumé.

<comment><USER39> This is wrong. Both terms are used in exactly the same way in the UK but the expectations are different. In the US, a resume is expected. In the UK, a CV is expected.

People who use the terms interchangeably are wrong in either case, but that wrongness may vary. If someone in the UK says resume they _might_ mean CV, whereas if someone in the US says CV they _might_ mean resume.

No matter where you are the rules are the same. A resume is usually one page and is a summary. A CV is usually about 3 pages (this is more variable) and contains a full work history.

Where there is often some confusion about them being the same thing is that CVs can be "tailored" and indeed it's usual to compress large chunks of work history if it's not relevant to a particular application. That doesn't make it a resume however.

I'm less certain about CVs in the US, but I believe they simply leave out what would normally go in a resume, which would is often what the first page of a UK CV looks like.</comment></comment></comment></comment>


Ask HN: Machine Learning and Carbon Sequestration? - <AUTHOR> Hey HN,
I'm a software engineer and have been recently inspired by the https://www.trilliontrees.org/ project.
On a recent consulting project, my friends at https://deepai.org/ were tasked with estimating the number of palm trees in a given region based on satellite imagery. Although the satellite imagery provided was not of the best quality, we were able to come up with a machine learning model that could estimate the quantity of palm trees reasonably well.
We think we could extend this model to track other types of trees and foliage, and perhaps extrapolate the amount of carbon sequestration occurring on a city-by-city/year-over-year basis. It could be a useful tool for academia as well as a nice visualization for the public via a web-based dashboard. Throw in some gamification and a leaderboard to show which cities are planting the most trees would be pretty doable as well.
Viable idea? Already been done?
Would love some suggestions from folks in the knowhow since my knowledge of climate change right now doesn't go much further than the fundamentals. <comment><USER2> It would be useful if you could somehow estimate the health, species and growth rate of those trees.</comment>