HNHacker News
TopNewBestAskShowJobs

zephyrfalcon

2,508 karma · joined January 22, 2008

submissionscomments
zephyrfalcon··on C Minus Minus
You probably mean Sphinx C--: https://bkhome.org/archive/goosee/cmm/
zephyrfalcon··on Ask HN: How do you find the weird parts of the web?
I don't know about blink, but there is a marquee tag on the front page and it works as expected in Edge.
zephyrfalcon··on Trealla – A compact, efficient Prolog interpreter written in plain-old C
All true, but you make it sound boring. :( I was under the impression that the ISO standard was (arguably) the "best" way to write a Prolog implementation, providing a flexible foundation to build future features on top of. Was I misinformed?
zephyrfalcon··on Crimes with Python's pattern matching
"Python is wrong about typing and classes. In OOP, classes are not types; interfaces are."

That might be true if there was one single definition of OOP that everybody agreed on. Like with most other religions, this isn't the case.

zephyrfalcon··on You Don't Need the Cloud
I had similar thoughts when reading it. They're using servers that are hosted by someone else; you don't even know where they are exactly. That is still the cloud.
zephyrfalcon··on Byte Magazine Volume 07 Number 08 – Logo (1982)
To add to that, Brian Harvey's homepage has three books about Logo for free: https://people.eecs.berkeley.edu/~bh/#csls
zephyrfalcon··on Ask HN: Freelancer? Seeking freelancer? (August 2021)
SEEKING WORK | Ocala, FL | remote/freelance

I am looking for part-time work, preferably 20 hours a week or less. If you are looking to get a small project done, or you have an existing project where some maintenance work needs to be done (perhaps on a regular basis), then I would love to hear from you.

I am a very experienced Python developer, having used the language in all kinds of areas and situations, including web development (Django, Flask, Pylons, Google App Engine, etc), desktop GUI development, database access (MS SQL Server, MySQL, and Postgres), ORMs, REST APIs, scripting, backend development, automated testing, web crawling/scraping, data extraction and parsing/ETL, parsing, language implementation, games, etc.

I have a lot of experience with relational databases and SQL as well, especially MS SQL Server and Postgres. In fact, in all of my previous jobs I have used SQL, including designed database schemas, writing queries, measuring performance and optimizing queries, writing views and stored procedures, etc.

I am also available for technical writing (I kept a programming blog for many years, mostly about Python), and for front-end development using React.

(For the record: Although Python is my main programming language, I am also interested in, and have worked with, many other programming languages, including C, D, Delphi, Go, C#/Mono, Ruby, OCaml, Prolog, Lisp, Scheme, etc, on Windows, Mac OS X and Linux systems. I am also available to work on projects in these languages.)

Website: http://aquila.blue

Resume: http://aquila.blue/misc/resume.html

Open source/personal projects: https://github.com/zephyrfalcon ; https://bitbucket.org/zephyrfalcon ; https://gitlab.com/zephyrfalcon

Email: zephyrfalcon at gmail.com

zephyrfalcon··on Ask HN: Who wants to be hired? (August 2021)
Location: Florida

Remote: yes

Willing to relocate: no

Recently use technologies: Python, Django, Postgres, React, Redux, Node, HTML, CSS

Resume/CV: http://aquila.blue/misc/resume.html

LinkedIn: https://www.linkedin.com/in/hans-nowak-16a9b316a/

Github: http://github.com/zephyrfalcon

also: http://bitbucket.org/zephyrfalcon

and: http://gitlab.com/zephyrfalcon

Email: zephyrfalcon at gmail.com

Note: At this time I am looking for part-time work, preferably 20 hours a week or less. A small, short project, or some maintenance work, would be ideal.

zephyrfalcon··on Why Learn Prolog in 2021?
On the other hand, Richard O'Keefe claims in _The Craft of Prolog_, that "elegance is not optional":

""" Elegance is not optional.

There is no tension between writing a beautiful program and writing an efficient program. If your code is ugly, the chances are that you either don’t understand your problem or you don’t understand your programming language, and in neither case does your code stand much chance of being efficient. In order to ensure that your program is efficient, you need to know what it is doing, and if your code is ugly, you will find it hard to analyse. """

https://programmingisterrible.com/post/39499310419/elegance-...

zephyrfalcon··on Ask HN: Who wants to be hired? (January 2020)
Location: Ocala, FL

Remote: yes

Willing to relocate: no

Technologies: Python, relational databases (MS SQL Server, Postgres, MySQL), web crawling, GUI development, scripting, automated testing, SQLAlchemy, web development (esp. Flask, Django, Pyramid), ETL, REST APIs, parsing. Web development: mostly React. Languages: Python of course, Scheme, Prolog, Lisp. I have some familiarity with many other languages, like C, C#, Ruby, OCaml, Elixir, Clojure, Haskell, etc, and in most cases I can probably quickly become productive in them, if you have an existing projects in one of these languages. (I am always eager to pick up new programming languages or technologies.)

Resume/CV: http://aquila.blue/misc/resume.html

LinkedIn: https://www.linkedin.com/in/hans-nowak-16a9b316a/

Github: http://github.com/zephyrfalcon

also: http://bitbucket.org/zephyrfalcon

and: http://gitlab.com/zephyrfalcon

Email: zephyrfalcon at gmail.com

Note: At this time I am looking for part-time work, preferably 20 hours a week or less.

zephyrfalcon··on Ask HN: Freelancer? Seeking Freelancer? (January 2020)
SEEKING WORK | Ocala, FL | remote/freelance

I am looking for part-time work, preferably 20 hours a week or less. If you are looking to get a small project done, or you have an existing project where some maintenance work needs to be done (perhaps on a regular basis), then I would love to hear from you.

I am a very experienced Python developer, having used the language in all kinds of areas and situations, including web development (Django, Flask, Pylons, Google App Engine, etc), desktop GUI development, database access (MS SQL Server, MySQL, and Postgres), ORMs, REST APIs, scripting, backend development, automated testing, web crawling/scraping, data extraction and parsing/ETL, parsing, language implementation, games, etc.

I have a lot of experience with relational databases and SQL as well, especially MS SQL Server and Postgres. In fact, in all of my previous jobs I have used SQL, including designed database schemas, writing queries, measuring performance and optimizing queries, writing views and stored procedures, etc.

I am also available for technical writing (I kept a programming blog for many years, mostly about Python), and for front-end development using React.

(For the record: Although Python is my main programming language, I am also interested in, and have worked with, many other programming languages, including C, D, Delphi, Go, C#/Mono, Ruby, OCaml, Prolog, Lisp, Scheme, etc, on Windows, Mac OS X and Linux systems. I am also available to work on projects in these languages.)

Website: http://aquila.blue

Resume: http://aquila.blue/misc/resume.html

Open source/personal projects: https://github.com/zephyrfalcon ; https://bitbucket.org/zephyrfalcon ; https://gitlab.com/zephyrfalcon

Email: zephyrfalcon at gmail.com

zephyrfalcon··on Ask HN: Who wants to be hired? (December 2019)
Location: Ocala, FL

Remote: yes

Willing to relocate: no

Technologies: Python, relational databases (MS SQL Server, Postgres, MySQL), web crawling, GUI development, scripting, automated testing, SQLAlchemy, web development (esp. Flask, Django, Pyramid), ETL, REST APIs, parsing. Web development: mostly React. Languages: Python of course, Scheme, Prolog, Lisp. I have some familiarity with many other languages, like C, C#, Ruby, OCaml, Elixir, Clojure, Haskell, etc, and in most cases I can probably quickly become productive in them, if you have an existing projects in one of these languages. (I am always eager to pick up new programming languages or technologies.)

Resume/CV: http://aquila.blue/misc/resume.html

LinkedIn: https://www.linkedin.com/in/hans-nowak-16a9b316a/

Github: http://github.com/zephyrfalcon

also: http://bitbucket.org/zephyrfalcon

and: http://gitlab.com/zephyrfalcon

Email: zephyrfalcon at gmail.com

Note: At this time I am looking for part-time work, preferably 20 hours a week or less.

zephyrfalcon··on Ask HN: Freelancer? Seeking Freelancer? (December 2019)
SEEKING WORK | Ocala, FL | remote/freelance

I am looking for part-time work, preferably 20 hours a week or less. If you are looking to get a small project done, or you have an existing project where some maintenance work needs to be done (perhaps on a regular basis), then I would love to hear from you.

I am a very experienced Python developer, having used the language in all kinds of areas and situations, including web development (Flask, Django, Pylons, Google App Engine, etc), desktop GUI development, database access (MS SQL Server, MySQL, and Postgres), ORMs, REST APIs, scripting, backend development, automated testing, web crawling/scraping, data extraction and parsing/ETL, parsing, language implementation, games, etc.

I have a lot of experience with relational databases and SQL as well, especially MS SQL Server and Postgres. In fact, in all of my previous jobs I have used SQL, including designed database schemas, writing queries, measuring performance and optimizing queries, writing views and stored procedures, etc.

I am also available for technical writing (I kept a programming blog for many years, mostly about Python), and for front-end development using React.

(For the record: Although Python is my main programming language, I am also interested in, and have worked with, many other programming languages, including C, D, Delphi, Go, C#/Mono, Ruby, OCaml, Prolog, Lisp, Scheme, etc, on Windows, Mac OS X and Linux systems. I am also available to work on projects in these languages.)

Website: http://aquila.blue

Resume: http://aquila.blue/misc/resume.html

Open source/personal projects: https://github.com/zephyrfalcon ; https://bitbucket.org/zephyrfalcon ; https://gitlab.com/zephyrfalcon

Email: zephyrfalcon at gmail.com

zephyrfalcon··on What's Coming in Python 3.8
Prolog has an ISO standard... I am not sure if it's still evolving, but specific Prolog implementations can and often do add their own non-standard extensions. For example, SWI-Prolog added dictionaries and a non-standard (but very useful) string type in version 7.

That said, it is nice that I can take a Prolog text from the 1980s or 1990s and find that almost all of the code still works, with minor or no modifications...

zephyrfalcon··on What's Coming in Python 3.8

    def bar():
        x += [3]   # UnboundLocalError
This is an especially funky one. x.extend([3]) would be allowed. Presumably x += [3] is not because it expands to x = x + [3]... However, the += operator on lists works the same as extend(), i.e. it changes the list in-place.
zephyrfalcon··on Nobody talks about the real reason to use Tabs over Spaces
Yeah but, in a GUI, pressing Tab is supposed to change focus, not to insert a Tab character.
zephyrfalcon··on Myths about Perl 6
Mmh, depends on when you start to count. I still consider 1.5.2 the gold standard for Python -- but I am weird. :) Anyway, since then it has gained new-style classes (which gave explicit methods to things like strings, tuples and numbers), list comprehensions, generators (which also gained some changes over time like 'yield from'), generator comprehensions, built-in sets with new syntax, dictionary comprehensions, decorators, descriptors, properties, context managers and the 'with' keyword, absolute vs relative imports (again with new syntax), import hooks, a boolean type, extended slices, a ternary if, ordered dictionaries, async/await, extended tuple/list unpacking, the @ operator, several new ways of string formatting, ... And of course 3.x brought major changes to the way Unicode was handled. Never mind those, um, interesting type hints and the upcoming := operator.

Python as it is now, is a very different language than it was in those days. Even ignoring the whole ecosystem with libraries and package management etc, and standard library changes, it's just a much bigger language.

zephyrfalcon··on Myths about Perl 6
Red, sort of kind of.

I have been thinking that there might be room nowadays for a new language that is unabashedly a "scripting language"... something you can easily write scripts with, but which doesn't necessarily aspire to scale real far beyond that, so people will not immediately reach for it to write, say, 250K-line web applications. :3 (Then again, if a language is good/useful/flexible enough, people will use it for everything.)

Anyway, I would like to see such a language. The old stalwarts will probably still work just fine for this purpose, but I am curious to see if there's any innovation left/possible in this particular space.

zephyrfalcon··on The Tragedy of the Common Lisp: Why Large Languages Explode
So, I see:

    Python 3.7.3 (default, Mar 27 2019, 09:23:32)
    [Clang 9.0.0 (clang-900.0.39.2)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> len("ẅ")
    2
I wonder why this is? Is the Clang version relevant here?

EDIT: Your "ẅ" doesn't seem to be the same as the OP's "ẅ", although they look the same at first glance.

    >>> "ẅ".encode('utf-8')
    b'w\xcc\x88'
    >>> "ẅ".encode('utf-8')
    b'\xe1\xba\x85'
EDIT 2. More info:

    >>> import unicodedata
    >>> w1 = "ẅ"
    >>> w2 = "ẅ"
    >>> unicodedata.name(w1)
    'LATIN SMALL LETTER W WITH DIAERESIS'
    >>> unicodedata.name(w2)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: name() argument 1 must be a unicode character, not str
    >>> unicodedata.name(w2[0])
    'LATIN SMALL LETTER W'
    >>> unicodedata.name(w2[1])
    'COMBINING DIAERESIS'
So the second version (w2) does seem to consist of two separate "characters", LATIN SMALL LETTER W and COMBINING DIAERESIS, which is apparently not the same as the single-character LATIN SMALL LETTER W WITH DIAERESIS. I guess these are actually Unicode code points and not so much "characters" to a human reader, but as another poster pointed out, what the number of characters should be in a string isn't always clear-cut.
zephyrfalcon··on The Tragedy of the Common Lisp: Why Large Languages Explode
Apparently yes. A quick inspection suggests that this is the same in Ruby, Haskell, SWI-Prolog, Gauche Scheme, SBCL and D. (I might not have the latest version of everything, so maybe this has been fixed in some of them... assuming it needs fixing. Maybe there's a reason for the answer to be 2 if so many language implementations insist on it. Or, they all use the same faulty algorithm. I don't know.)
zephyrfalcon··on On the Impact of Programming Languages on Code Quality
> In the early days of Python, some employers used it as a way to filter for candidates who were ahead of the curve. I believe Paul Graham mentioned Lisp being good for attracting better programmers

Possibly "The Python Paradox" [1] and/or "Beating the Averages" [2]. (The first one, from 2004, is a bit of an odd read nowadays, since it no longer applies to Python.)

[1] http://www.paulgraham.com/pypar.html [2] http://www.paulgraham.com/avg.html

zephyrfalcon··on Prolog's Death (2010)
Tuple/list unpacking has been in Python for a long time and likely has nothing to do with catering to the functional crowd, which Guido isn't known for to begin with. Anyway...

> * You can't nest, like it was mentioned

    ((x1, y1), (x2, y2)) = makeLine ...
This works fine in Python:

    ((x1,y1), (x2,y2)) = ((1,2),(3,4))
I don't know what "makeLine ..." returns, but if it doesn't exactly match the tuples on the left hand side, it won't fly in Haskell either.

> * You can't use aliases

    line@(point1@(x1, y1), point2@(x2, y2)) = makeLine ...
No, but this works:

    line = p1, p2 = ((x1,y1), (x2,y2)) = ((1,2), (3,4))
and is more readable IMHO.

Point 3, 4 and 5 don't make sense in Python. This is pattern matching, not tuple/list unpacking. (One could argue that tuple unpacking is a form of pattern matching, but that is a different story...)

zephyrfalcon··on Prolog's Death (2010)
First example works fine in both Python 2 and 3. Second example works in Python 2.7 and earlier, but tuple unpacking for arguments was removed in Python 3. [1]

[1] https://www.python.org/dev/peps/pep-3113/

zephyrfalcon··on Prolog's Death (2010)
Considering how fashion-driven the programming world is, popularity (of the lack of it) of a language or technology says very little about how powerful it is. Prolog's way is very powerful, it's just very different from just about every other language out there, which makes it hard to learn and harder to master.

(As an aside, in my experience, people who believe that "programming == math" seems to be mostly attracted to languages like Haskell and OCaml, not so much to Prolog.)

zephyrfalcon··on PySnooper: Never use print for debugging again
Another (lightweight) tool for debugging is the q library: https://pypi.org/project/q/
zephyrfalcon··on Simply Logical: Intelligent Reasoning by Example (1994)
A bit further on it says:

> For example, given a specific length, we can ask whether there are lists of that length:

    ?- list_length(Ls, 3).
    Ls = [_G1007, _G1087, _G1167] ;
    false.
In the current situation, if you ask for `list_length(Ls, -1)`, this will fail, obviously because there are no lists with length -1. But if you remove the `N #> 0` clause, the code will happily try to find such a list, by checking for lists with length -2, -3, ... ad infinitum.

Another way to look at this is that if you have a list `[_|Ls]` with length N, its length must be an integer greater than 0.

zephyrfalcon··on Haskell, Ada, C++: An Experiment in Prototyping Productivity (1994) [pdf]
What is a "Python blob"?
zephyrfalcon··on V Programming Language
There used to be a stack-based language called V as well... https://code.google.com/archive/p/v-language/
zephyrfalcon··on I admit it: I like Python’s ternary operator
switch/case was, and still is, considered unnecessary in Python because it can be expressed just as clearly and concisely using if/elif/else. There was discussion about adding it, long ago, but (IIRC) Guido decided against it. It is not obvious what syntax switch/case should have in Python (two levels of indentation?), and its benefits are marginal at best.

Then again, many things that supposedly would "never" make it into the language, have been added over time anyway, including the ternary if. So who knows...

zephyrfalcon··on PEP 584 – Add + and – operators to the built-in dict class
Before Python grew a set type, it was common to implement them in a similar way, i.e. as a dict with some kind of default value (0, 1, None, etc).
← PreviousPage 2 of 15Next →