Hacker Newsnew | past | comments | ask | show | jobs | submit | skovorodkin's favoriteslogin

I'm fairly sure I've said this before here and elsewhere, but bears repeating, especially for this post.

Statecharts is currently probably the most undervalued tool when it comes to programming GUIs with state. Statecharts are a continuation of state machines, but with less footguns and better abstractions to be able to build larger systems.

In the end, you either build a GUI that are using state machines implicitly, or explicitly. Tends to be less prone to bugs if you do so explicitly.

If you're interested, here is some starting points (copied from an older comment of mine):

Here is the initial paper from David Harel: STATECHARTS: A VISUAL FORMALISM FOR COMPLEX SYSTEMS (1987) - https://www.inf.ed.ac.uk/teaching/courses/seoc/2005_2006/res...

Website with lots of info and resources: https://statecharts.github.io/

And finally a very well made JS library by David Khourshid that gives you lots of power leveraging statecharts: https://github.com/davidkpiano

While we're at it, here are some links to previous submissions on HN regarding statecharts with lots of useful and interesting information/experiences:

- https://news.ycombinator.com/item?id=18483704

- https://news.ycombinator.com/item?id=15835005

- https://news.ycombinator.com/item?id=21867990

- https://news.ycombinator.com/item?id=16606379

- https://news.ycombinator.com/item?id=22093176


You know what? Not just Reed-Solomon codes, but Information Theory is cool.

People don't realise how ubiquitous different forms of encoding schemes are (I am leaving out compression/decompression schemes altogether here, but it has always amazed me as to what profound impact Information Theory has, and yet it is so out of the way):

Forward error-correction codes (FEC) at L2: IBM's elegant 8b/10b encoding https://en.wikipedia.org/wiki/8b/10b_encoding used in pre-10g era Ethernet, and its successor 64b/66b https://en.wikipedia.org/wiki/64b/66b_encoding used in post-10g era Ethernet / Infiniband / RoCE, and the sister 128b/132b encoding used by PCI-e 3 and USB 3 standards.

Linear error-correcting codes (LEC) for Volatile Memory: https://en.wikipedia.org/wiki/Hamming_code

FEC for HD Voice Transmission over Cellular Networks: AMR used in 3G and VoIP https://en.wikipedia.org/wiki/Adaptive_Multi-Rate_audio_code... and AMR WB for VoLTE aka HD Voice: https://en.wikipedia.org/wiki/Adaptive_Multi-Rate_Wideband

Fountain Codes for Digital TV on Mobile (DVB-H): Qualcomm's Raptors https://en.wikipedia.org/wiki/Raptor_code

Turbo Codes for 3G/4G Connectivity (OFDM), Satellite communication: https://en.wikipedia.org/wiki/Turbo_code

Optimal Erasure Coding (for data at rest, and for Mobile TV, and for 3G/4G): Reed-Solomon and its variants are a clear winner here (used by dropbox https://blogs.dropbox.com/tech/2016/07/pocket-watch/ and rumored to have been used by S3 https://perspectives.mvdirona.com/2009/06/erasure-coding-and... )

Upcoming: https://en.wikipedia.org/wiki/Low-density_parity-check_code LDPC codes are recommended for use by data-channel in 5G replacing Reed-Solomon whilst Polar Codes are adopted for the control-channel in 5G https://en.wikipedia.org/wiki/Polar_code_(coding_theory)

---

Ref: https://en.wikipedia.org/wiki/Error_correction_code


Project you can follow that link Unix comprehension, security and programming:

-implementing malloc (C)

-implementing nm and otools (C) (basics options only)

-implementing a ftp server (a fork for each new connection) or a basic IRC-like server (maybe using ring buffers, and only non-blocking I/O if you want to write in C)

-implementing ping then traceroute (in C obviously) (and nmap if you really want to push it).

In security, do small and easy challenges, like nebula (less than a day if you already know your stuff, i'd think maybe ~3 if you don't) and protonstar (i already knew some of the exploits and it still took me 4 days). Don't do those challenges alone, find a friend to help you: a second brain can think of new solutions and allow you to explain what you want to do (and just by explaining you'll get closer to find why it doesn't work, or why it does). The other challenges are not worth it if you just want to get how basic security work imo. At my school we then had to program some stuff like ptrace or strace (i don't remember which), it's pretty helpfull too, and it help a lot understanding gdb. Ah, and prior to the challenges, we rewrote a small part of the libc (strlen, strlcat and stuff like this) in assembly, and it was pretty helpfull (decompilers are fine, but its easier if you know a bit about assembly, at least with protonstar). If you want to do it, chose like 5 easy functions then 5 function which might use rep string operations, and implement them, it'll take you ~2 days (most of those will be research and reflexion, and you can do that during classes, like most of the security stuff actually).

I'll repeat myself, but if you're not crazy about security, i really advice you to work on this with a friend, security is boring when you're stuck (and really interesting when you're not)


For starters,

Xerox stuff for Interlisp-D, Smalltalk, Mesa and Mesa/Cedar,

https://archive.org/details/bitsavers_xerox

ETHZ Research

https://people.inf.ethz.ch/wirth/

https://www.research-collection.ethz.ch/handle/20.500.11850/...

"NEWP Programming Reference Manual" for ClearPath MCP (nee Burroughs B5000 in 1961)

https://public.support.unisys.com/aseries/docs/clearpath-mcp...

https://www.smecc.org/The%20Architecture%20%20of%20the%20Bur...

Check IBM's RISC research with PL/8, before they decided to create Aix instead.

https://en.wikipedia.org/wiki/PL/8

Then you can follow up on Singularity, Midori and Barrelfish for the more up to date stuff

https://www.microsoft.com/en-us/research/project/singularity...

http://joeduffyblog.com/2015/11/03/blogging-about-midori/

https://www.microsoft.com/en-us/research/project/barrelfish/

And their fruits into mainstream Windows

https://channel9.msdn.com/Events/Build/2012/3-005

https://channel9.msdn.com/Shows/Going+Deep/Mani-Ramaswamy-an...

https://channel9.msdn.com/Shows/Going+Deep/Inside-NET-Native

There is plenty more, however I think you can already lose yourself in such information. :)


I can't find it now but I recently read of one or two guys who systematically tabulated juggling tricks. Gaps in the table led to new tricks which astonished experienced jugglers -- the way gaps in the periodic table led Mendeleev to predict properties of undiscovered elements. One guy gives talks on juggling at math conferences and on math at juggling conferences.

Here's an eclectic mix of examples from various perspectives across multiple domains. Understanding the representation of knowledge and the fundamental structure that underpins the connective essence of things is one of the prime ideas that drives my thinking, and as a consequence much of what I post about on here is related to that in some way. Below is a brief sampling of examples related to this idea, and for a more extensive list, browse through my postings (and if you can see how they all connect, let me know!).

In general, see the Classification of Finite Simple Groups [0]. In terms of specific examples, the minimal classifications of knots [1], trees [2], and braids [3] are 3 instances that popped to mind. From a number-theoretic perspective, the paper Enumerating the Rationals and its derivative works are interesting reads. In terms of spatial structure and spatial decomposition, look at the classification of crystal structures [4], lattices, polytopes (zonotopes are particularly interesting), periodic and aperiodic tilings, the classification of space-filling curves, and the classification of closed surfaces [5]. From a relational perspective, look at the classification of topological spatial relations [6] and Allen's interval algebra [7]. And the one my intuition finds most intriguing is the classification of Group Theory Single Axioms and its relation to my conjecture that division is primary.

[0] Classification of Finite Simple Groups https://en.wikipedia.org/wiki/Classification_of_finite_simpl...

[1] Prime Knots https://en.wikipedia.org/wiki/List_of_prime_knots

[2] Enumerating Trees https://www.cs.virginia.edu/~lat7h/blog/posts/434.html

[3] Braid Group https://en.wikipedia.org/wiki/Braid_group

[4] Crystal Structure https://en.wikipedia.org/wiki/Crystal_structure

[5] Classification of Closed Surfaces https://en.wikipedia.org/wiki/Surface_(topology)#Classificat...

[6] Topological Spatial Relations https://en.wikipedia.org/wiki/Spatial_relation

[7] Allen's Interval Algebra https://en.wikipedia.org/wiki/Allen%27s_interval_algebra

[8] "Yet Another Paper on Group Theory Single Axioms" https://www.cs.unm.edu/~mccune/projects/gtsax/

P.S. Clifford Algebra / Geometric Algebra [00] unifies much of mathematics, e.g. in GA, Maxwell's equations can be reduced to one equation and expressed on one line [01]:

[00] Geometric Algebra https://en.wikipedia.org/wiki/Geometric_algebra

[01] Maxwell's equations formulated in terms of Geometric Algebra https://en.wikipedia.org/wiki/Mathematical_descriptions_of_t...


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: