Posts

Showing posts from February, 2018

So Many Modes of Thinking, So Many Much Confusion

[Update] Wow. I just figured out what I was blocked on and...wow! Was this difficult. What I was working on goes way back to early prototypes and a problem I thought I had figured out, but really didn't, but it was good enough to build apps, but not really that right, but I used it, because it was all I had.  Where I was frustrated today at not getting things done?  Now I'm really happy because I have a rock-solid design. Phew!  But read the article below and when you get to the end, this will make sense!  Writing a programming language is wildly different and fun! The Original Introduction Is Below This Line Just a quick note. I'm learning why I get blocked when I'm not able to really make progress the way I'm attempting to.  I noticed today that I get intense fears or anxiety related to getting things done. The tension is pretty high. The fear I feel is probably not unlike any normal fears that anybody else feels when they sit down to work. The difference...

Tomorrow: In Which I Honor Pinky & Brain and Try to (Metaphorically) Take Over the World

Being blind is difficult.  But it's not just being blind, it's the cyclical nature of my mental focus.  Getting hit in the head is like in the cartoons.  You get whacked, and there's a cross-eyed shock, then everything starts vibrating like cymbals.  What isn't visible is the lasting and debilitating damage to the neural trees.  A nice way to say whatever was learned and sitting on those neural trees is now gone.  My mind orbits like the zodiac, except only some of the signs are illuminated. What that means is? Today I'm productive.  Tomorrow I might not be.  I might not be productive again for days, weeks, or months.  I seem to be getting better in a way I haven't experienced in a long time. I can't remember being this focused in close to 30 years. Brain injuries are scary for the limitations they introduce. I'm going to do everything I can to try to make tomorrow as productive as today, if not more-so, but who knows.  So many stres...

Evolving Java & Lisp, by Awesome Sauce Java

It's kind of a weird thing to be saying, but Awesome Sauce Java is going to make it possible to evolve Java.  I've mentioned it before in a prior post.  But, by virtue of the design, ASJ will provide users with standard JDK Java calls, in a functional form, standard Lisp calls, new idioms, and modified/simplified/cleaned-up Java JDK & Lisp calls. I was just looking at both Java and Lisp code.  With regards to the Java code, I'm going to start with modifications by eliminating obvious redundancy.  Where a call contains the name of the argument, I'll eliminate it.  For example, the call to processWindowEvent( WindowEvent e ), could just as easily have been called process( WindowEvent e ). While it's going to take a little time, it just makes sense.  Because once the redundancy is removed from the calls, the language becomes easier to work with.  Calls become easier to remember and expressions become more expressive. I'll be doing the same with ...

I Only Sound Confused Until I'm Positive

I Only Sound Confused Until I'm Positive I didn't know I was going to be addressing this in Awesome Sauce Java.  But apparently, being on the inside of a Lisp invites exploration and all that exploration leads to wonder and now I'm standing inside a region of software I never wanted or planned to be, with a possible approach to possibly simplify some complicated things related to packages, with no confidence anybody is going to care. I'm tilting at windmills. Names are a vexing bane in software. Names are confounding in software. Just trying to get this article started has me confused. Maybe a little angry.  Packages are great, but they're not, but it's not nice to complain just to complain.  Best to point out the why they're great and why they're not, then show how to improve them. Packages are the best.  Maybe the best it can possibly be.  Whatever packages are?  They're a really, really, really, truly difficult hard problem. There may n...

Things I'm Working On & All That Yesterday Stuff, Too

I need a job. Meanwhile, I keep writing, because what's the point of saying you can write code if all you're doing is reading job descriptions, writing cover letters (barely), and sending resumes (barely, too)?  I spent years sending letters and applying for all kinds of jobs. Strangely with literally no response. Ever. I work. It's been a strange 7 years since getting assaulted by that guy who came close to tearing my head off. Today I'm working on and writing a few things:  Class definitions. With Awesome Sauce Java, you'll be able to create class definitions like Java defclass definitions like Lisp. One of the things I'm exploring is merging class definition into a new form that's like a combination of both the Java and Lisp methods. If this comes to fruition, it won't obviate class or defclass, just be another way to create classes. Concurrency Oh boy was I thinking about concurrency last night and this morning. Will write a separate ar...

Coming Sooner: Language Comparisons

I'm taking a break from JavaFX.  I almost have everything ready to build a first app.  I'm kind of excited, but I'm not sure what to think about JavaFX.  From what I've read, it looks nice, but I read about building a release app once and it seemed really complicated. Groovy and Kotlin and Clojure, Oh My I was looking at Groovy and Kotlin today.  I've been actively looking for sample code to use as comparison against Awesome Sauce Java.  This is going to be an ongoing project I'm going to do my best to keep going.  I think if I hadn't taken a detour into Android development, I would have done this a while ago, because it's important to present what Awesome Sauce Java looks like. I think getting macros working has helped me because that one feature was apparently occupying a lot of energy and mental focus.  Now that it's working and right in front of me?  My motivation is empowered and I want to get the next features done.  Bonus is that ...

Coming Soon: Language Comparisons, but First: UI's and Applications

I'm writing this to remind myself and because I'm hot on the trail of building UI code for desktop apps, server-side web apps, and Android apps, all in Awesome Sauce Java. I'm writing here a lot today. That's because I'm writing over there a lot, too, and doing some good things with Awesome Sauce Java today.  I had stalled out, but now I'm in a growth phase. I just started working on building Awesome Sauce Java stand-alone applications.  It'll take a few more minutes to get a test application built.  I might do a video to show how to create an ASJ application.  I'm still stuck on Swing apps, but while I was working on getting all the code organized, I also did some work to get JavaFX set up for ASJ.  After I get a test application built, I'll build a quick test application for JavaFX.  Finally. After the configuration and JavaFX tests, I'm going to do a little work on HTML generation.  Then, I'll do some research and work on rendering ...

The Trouble With Coding Is...

Popularity is for People Who Something Witty The problem with code is it's all just a big giant <expletive> hack. There.  I said it. The problem with code is how we write code.  It's not what the code does.  In fact, the fact that we focus on what code does highlights that it's not just solvable, it's possible to approach. Figuring out how we write code and what's wrong with it?  It's like talking about diet.  We don't have a control, so we can't science things up about either diet or how we code.  We assume that how we code is the way it's intended to be, because we've mostly always done it that way. But it's a total frickin' hack.  I'd love to say I knew that yesterday or three years ago when I started writing Awesome Sauce Java, back when it was just a language for Calc Me Sum 2C.  But then it started to get to me and I didn't know what it was that was getting to me, but I knew it was the code.  Years ago, I had...

Algorithms and Testing Awesome Sauce Java

I'm developing a habit that I used to have before the really bad head injury, when I was at Apple.  I'm reading, studying, and practicing from books. Whoot!  I know, right?  It's totally revolutionary. I'm going to spend some time writing about what I read here, because what I'm reading is directly related to some aspect of Awesome Sauce Java with Hot Sauce.  Plus, writing about what I do helps me remember that I've done it.  I find that when I want to remember, I mostly can't, unless I see a picture or write about it.  The cool thing about pictures is they provide a ton of memory stimulation.  The problem with pictures is I forget them as soon as I take them, so rarely remember to look at them, even if I try to remember to look at them. Writing is the best way I've found to help me recover brain function.  It's weird to look back and see that I've mostly been following whoever I happened to be around, and many of those people are not only ...

Making the Old New Again with a Differently

Making it on a Shoestring I was working on Awesome Sauce Java last night when I started thinking. Then it hurt. So I had to stop. When I started writing a programming language, it was fun and new. It went pretty quickly, too. But it went quickly for a couple of reasons. The first was that the language was small. The second was that the functions I picked to implement were pretty easy. I was just getting started and wanted to limit the complexity. By keeping one side clear and easy to validate, I could know where a bug was happening when they inevitably cropped up. As the language has grown, things have become more intricate. Sometimes new additions alter the way the reader processes tokens. Or sometimes new code alters the way eval works. Sometimes things just break and it's not clear why. What I noticed is sometimes things just take time to figure out. I was starting to be frustrated with my pace and felt critical that I wasn't going as fast as possible. Or a...

Too Many Choices...Stalling

The possibility exists somebody stole my code.  I know nothing about security or firewalls.  My computer's been hacked before.  My ideas are probably gone.  Worse, it's likely I'm being made to look like I'm the one who took the idea.  I started ASJ as a product called Spliff (Lisp + Java as Splivaja sounded ucky, I wanted Lisp in the name, so for a while, it was Spliff.) I started it all in 2015 and have written it without any assistance since.  I made all the design decisions for the internal structure, and have used the language to design new features that are exciting and advanced.  I'd hate to lose it to somebody else, but I'm also one short step from homeless, smell like racoon crap, and get harassed like a Dhimmi in NYC of the state of New York, in the United States of America. Nobody believes me and it's a frightening place to be.  Especially with the stack of inventions I have.  Or thought I had.  People steal.  People ...

Preparation for the Summit

I'm not summiting anything anytime soon, but I liked the title.  It's kind of appropriate, but unlike real life, the summit in software is the next peak from which to start the next ascent into the unknown.  I hope.  While my life is chaotic due to what I get to call spatial blindness and brokenness to time, when I write ASJ code, it's pretty fun to experience what grows. This morning on the train, I had the chance and the perspective to review what ASJ is, how it works and where to take it next.  I'm pretty sure getting macros moving/working has really taken a load off my mind.  One thing I've noticed recently, and I hope the awareness is a sign of healing, is that when I sometimes think of something I have to build, there's a big fear that overwhelms my logical mind. In the abstract, it seems to make sense that fear would overwhelm certain thoughts or behaviors, as the most likely area to suffer when violently clubbed in the front of the head is the higher...

Macros Are Different

While reading macro definitions in OnLisp, by Paul Graham, I was reminded that macro programming is different.  A normal program is written with standard considerations to scope, instantiation, state, atomicity, mutability, and the myriad other purposes for bringing code into existence and the meta-detail surrounding it.  Macros are different in that they deal with, among other things, expansions, like: e=mc^2 I wrote this the other night while simultaneously wrapping my head around macros and wrestling my personal demons: Macros are wildly untame critters. They expand as text, they get evaluated as code, then expanded, then...they keep expanding and evaluating.  Macros are to programming what quantum is to physics.  Without macros, e=mc^2 would have looked like, "Math Vomited Onto Paper", and Einstein would have sounded incomprehensibly complicated trying to make his physics simply approachable. "No really! It's called Relativity! There's light and eleva...

Lisp Macros in Awesome Sauce Java

Well, last night I put the macro calls in the right place and made them work.  Initial tests are solid.  Code looks good.  I'm shocked.  Not because I lack confidence.  I may be kind of broken, but I've written device drivers, medical CAD, memory managers, a bunch of apps, and software that might be considered challenging. But macros are different.  Maybe they're a little tricky, but once I got where they went and what they did?  I got them.  I was slow to get to understanding, but I knew I'd sort them out.  It's maybe more the beliefs I've had about writing a Lisp implementation, much less a Lisp implementation that's Java-based, merging both Java and Lisp into one language. For 17 years, I thought about writing a Lisp.  The more I used and learned Lisp, the bigger and more complex the language seemed to be.  While I hoped to one day have the opportunity to write a Lisp, it felt like a huge undertaking, one that would push me t...

I have to write this, otherwise I'll forget I had this thought about ASJ Web

I've been working on macros for a while now. They work, but I'm not confident.  Not that I'm not confident in my abilities. I'm not confident I understand macros.  I get that they're backquote, comma, and comma-at.  The parsing is all in, the right things are getting the right calls, and things are getting constructed in the right places and ways.  I know that I'm not seeing something right. I just don't know what it is I'm not seeing.  So, I'm reading OnLisp about how and what and why macros are, so I can see what it is I'm blind to.  This is kind of my normal.  The language holds my hand until something happens and I can't see the hands anymore.  Then it kind of becomes a blind game of sounding out where I am and where it is, so I can slowly orient myself to go the right way and feel my way through what I need to build.  It's weird because I can see and hear and speak, but there's a lot broken on the inside of my mind (from a lot ...

My Brain is Stuffed with Awesome Sauce: Check it Out!

I couldn't figure out why my productivity was dropping.  I had a sense that my workload was spreading out horizontally, which makes sense, because as Awesome Sauce Java becomes more mature, the tests lead to ideas, applications, and implementations.  Many of the ideas are close to being finished products, but for a piece they're waiting on to turn them into a final release.  That's the nice part about building a language on the JVM - it works and works well. But this morning, I put together a list that I'd been trying to figure out how to put together.  What that means isn't to build a list, I've done that many times and for months.  The problem with being spatially blind is remembering that I wrote a list AND where it lives. Recently, at the beginning of Februrary, I'd found a mechanism that helps me remember, so I'm exploiting it.  My hope is it'll turn into an application that not only allows me to store my thoughts, but keep them in front of ...

A Little Background About the Guy Building Awesome Sauce

I was giving a demo to my son the other day.  And it was awful.  I've been working so hard on just exploring and framing out enough of Awesome Sauce Java with Hot Sauce, that it's a developers dream, but an "elevator pitch" nightmare. Fortunately, it'll be easy to fix.  Once I get macros implemented, I'm going to finish a configuration I started the other day that will make it possible to manage the state of all the parts of everything related to showing what makes ASJ w/HS special.  I mean, I'm supposed to say it's cool.  But, since you don't know me, you might think I'm just hacking on something because I think it's cool. Truth is, I can only work on things that are measurably "better" with respect to some meaningful metric.  I've been working on software continuously since 1980.  The weird part about my career, is that it tanked after a savage head injury.  At the time, I was at Apple.  They had just made a job for me, ...

Awesome Sauce Java and Lisp Macros for Java

I keep forgetting to remember to talk about macros in Awesome Sauce Java. Among the language features that are distinctly Lisp, that Lisp programmers point to as essential and powerful and differentiating?  Macros are it.  Making them available to a Java-based language, as fully-functional macros, will hopefully be a positive thing. Lisp macros provide the means to transform code. They're often viewed as syntactic sugar, but that diminishes what macros are. This is how Graham describes Lisp macros: Lisp's macro facility allows you to define operators that are implemented by transformation. The definition of a macro is essentially a function that generates Lisp code - a program that writes programs.  From these small beginnings arise great possibilities, and also unexpected hazards.  Paul Graham, OnLisp, pg 82 Paul Graham goes on to say that macros are different than functions.  They work differently than functions. Functions produce results. Macros produc...

Awesome Sauce Java Web: A Second HTML Example

Intro This week, I've been implementing server-side scripting in Awesome Sauce Java. It's been a nice surprise to discover that ASJ will offer dynamic scripting for the web. It's especially compelling because Awesome Sauce will provide the ability to combine the generation of HTML while embedding and including Java logic all in a single language. HTML with Java in a Scripting Language The following is a quick sample script I've put together to test some HTML tags with Awesome Sauce Java. (defun fungo-index ()   (html     (head        (title "Awesome Sauce Java with Hot Sauce")        (h1 "Awesome Sauce Java")        (h2 "Server Side Web")        (h3 "A First Example")        (h4 "The next one will have the database code")        (h5 "But this one has math calculations!"))  ...

Life is a Challenge, but it's FUN!

My life has been fun, but at times quite challenging. Drought, earthquakes, crazy numbers of cats and at the same time, bugs, head injuries I watched from 15 feet away from my body, bad doctors, and a whole lot of bad characters. But I keep going because it keeps getting better.  I've been poor a long time, but I know money will come. How do I know? The drought ended. Nothing lasts forever. Bad people might try to make us look bad, but the truth always comes to light. Which brings me to Awesome Sauce Java with Hot Sauce.  Awesome Sauce is the language. It's dynamic and fast and puts Java in a format that works for me. I've learned more Java with it than ever before. But it kicks my butt a lot and frustrates me. Like today, while working on the HTML generating code, I realized I implemented macros in a weird way. Or I'm not understanding how I implemented them.  That happens sometimes when I haven't worked with a set of logic, block of code, or mode of operatio...