HN user

1331

158 karma
Posts0
Comments76
View on HN
No posts found.

Asahi Net | Kyoto, Japan | Full-time software developers | ONSITE VISA

Asahi Net, a Japanese ISP based in Tokyo, has started a new R&D lab in Kyoto. We are developing our first product, which would likely be exciting to those interested in distributed systems, functional programming, embedded systems, network programming, Linux kernel hacking, or web development. We are currently hiring for the following roles:

Haskell developer - We are seeking developers who are proficient in Haskell and want to create secure, reliable, and scalable software.

Embedded systems engineer - We are seeking an engineer who enjoys developing Linux-based embedded systems. Desired skills include C, Git, Make, GDB, and POSIX shell.

Web developer - We are seeking a "full-stack" web developer. Desired skills include Haskell, Python 3, or Go for the server side and JavaScript for the client side.

Linux kernel/driver developer - We are seeking a Linux kernel hacker who is network savvy. Desired skills include experience with ODP or DPDK.

日本語でも相談・面接可能ですので、興味がある方はご連絡ください。

If you are interested, please email me:

    intercalate "@" . fmap (intercalate ".") $
      [["travis", "cardwell"], ["asahinet", "com"]]

I use gitit [1], which is open-source [2]. As a programmer, I really like being able to browse (less), search (grep), and edit (vi) via the command line. For my personal wiki, I do not even run the web server, saving RAM, though I can easily start the server if/when desired. Since it is backed by git, it is also easy to clone the wiki for offline usage and sync when going back online.

[1] http://gitit.net/

[2] https://github.com/jgm/gitit

If you stay with your current job and do not go to university, here are some concrete ideas for things that you might want to try, which I would recommend based on what you wrote:

* Learn C. I have heard good things about _Learn C The Hard Way_, which is free, though I have never used it myself. Since you want to know more "CS," work through _Introduction to Algorithms_, a pretty standard (second-semester) university text, in C (NOT a language than manages memory for you!).

http://c.learncodethehardway.org/

http://mitpress.mit.edu/books/introduction-algorithms

* Work through _The Elements of Computing Systems_ (aka "From NAND to Tetris"). The book is fun, and it introduces many topics that are more advanced than CRUD.

http://www.nand2tetris.org/

I have many other ideas, but I decided to stop here in order to emphasize those above. :)

I would like to second "learn something new each *" (for anybody, university degree or not!). It is great if you can do so on your own. If you have a hard time, you can change your situation (pay money to take courses, work through free courses online, get a mentor, study with others, work on open source projects, etc., etc.) in order to get yourself to do the necessary work to learn [relevant] new things regularly. Note that the key is yourself, not external factors: you simply have to do the work.

It seems that the terminology is causing some confusion. The definition of a wiki is "a website which allows its users to add, modify, or delete its content via a web browser" [1], which is pretty much the opposite of "static." I assume that what you want is a static site generator that has organisational features that are common in wiki software...

My favourite wiki software is Gitit [2]. It uses Pandoc [3] to convert from an input format (such as Markdown) to HTML. Perhaps you could write a simple script that iterates through all source files and renders the HTML to a destination directory using Pandoc, creating any subdirectories as required. That minimal solution should be very easy to implement; adding organisational markup within the HTML would require some programming.

[1] http://en.wikipedia.org/wiki/Wiki

[2] http://gitit.net/

[3] http://johnmacfarlane.net/pandoc/

24-bit color sucks 14 years ago

> Academics have told us that human eyes can't distinguish between the 16,777,216 colors provided by 24-bit depth, so we believe that even though it can't be true.

This is a fallacy. That the human eye cannot distinguish N different colours does not imply that a given colour space of >N colours contains every colour that the human eye can distinguish.

To give an equivalent example that is easier to understand, consider a colour space with 16.7 million shades of red. 16.7 million colours is more than the human eye can distinguish, but there are clearly many colours that the human eye can distinguish that are not in that colour space (notably shades of green, shades of blue, and combinations of red, green, and blue).

_Concrete Mathematics_ [1] is a good book that is fun to work through. The book can be considered an introduction/prerequisite to Knuth's _The Art of Computer Programming_ series [2], which contains much mathematics. If you would like a book that is not so difficult, _Introduction to Algorithms_ [3] (aka "CLRS") is also highly recommended.

[1] http://www.amazon.com/dp/0201558025/

[2] http://www.amazon.com/dp/0321751043/

[3] http://www.amazon.com/dp/0262033844/

You may want to try working through Spivak's _Calculus_ [1] textbook. It is a bit more involved than most calculus textbooks used in universities today, so it will likely not feel like you are simply repeating something that you have already done. I would recommend this book to anybody who wants to brush up on calculus after studying it before.

[1] http://www.amazon.com/dp/0914098918/

We use gitit [1]. It supports a number of syntax formats, including Markdown. It supports a number of revision control systems to use as the file store, such as git. I very rarely use the web interface, as I prefer to use the wiki from the command line, using vim for editing. Use of git also allows team members to easily clone the repository and use it even without access to the server.

Note that you can also edit text in Firefox textboxes with the editor of your choice using the "It's All Text!" add-on [2]. I have my browser configured to use gvim, so I can use vim to edit everything from emails and wiki content to this HN comment. :)

[1] http://gitit.net/ [2] https://addons.mozilla.org/en-US/firefox/addon/its-all-text/

The Racket (http://racket-lang.org/) dialect of Scheme also provides different levels of a programming language with features of increasing complexity, for educational purposes. In the current version, there are five levels to be used while working through _How To Design Programs_ (http://www.htdp.org/). This book is geared toward adults, but Scheme/Racket is also a great language for teaching children (http://www.bootstrapworld.org/). Perhaps this can provide some inspiration for your project.

I recommend Debian for many reasons, but the primary reason to choose Debian over OS X is package management. Installing the development platform, a database server, an HTTP server (if required), a decent text editor, and any other necessary tools is very easy in Debian. Doing so in OS X, on the other hand, is often problematic.

I taught a Haskell course last year, where participants brought their own laptops running Linux, OS X, and Windows. Linux was the least problematic. If I do a similar course in the future, I am thinking about providing a Debian virtual machine image for anybody who runs OS X or Windows.

I got it down to 47 characters and improved the performance by moving the less common case to the bottom. (Not that is matters since this implementation sacrifices performance for elegance, but playing code golf with Haskell destroys the elegance anyway...)

  f=filter
  q(h:t)=q(f(<=h)t)++h:q(f(>h)t)
  q _=[]

I hesitate to comment on a post that I do not think belongs on HN, but I am doing so to point out that the title is incorrect and sensational. I watched the video because I live near Tokyo and respect Dr. Kaku. He did not recommend leaving Tokyo in this video. He said that some of his family are wondering about evacuation while others have already left. He said that a lot of people have voluntary left because they do not trust the government.

Human language tends to be arbitrary, and I believe that the opposite (specificity) is desirable in programming languages. Many people argue that the future of programming will involve dumbing things down as more and more people become programmers, and one way of dumbing things down is to use natural language. (I shudder at involuntary thoughts of COBOL.) Instead of dumbing languages down, I think it would be much more beneficial to raise the intelligence of the programmers. I hope that the future of programming languages tends toward mathematics, not human language.

Currently, I am often very happy with Haskell syntax for solving problems, when it is possible to define an implementation that is precise, concise, and easy to understand. For solving problems that do not easily map to Haskell syntax, using DSLs (Domain Specific Languages) to map from a representation designed for the problem in question to a Haskell representation still allows Haskell to be a good choice of language.