Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
Note: You can take 10% off all Slashdot Deals with coupon code "slashdot10off." ×
User Journal

Journal Journal: MSS Code Factory 2.3.12994 Service Pack 1

This release refactors and rearchitects the core objects of the system using diamond inheritance of the interfaces so that you can cast between the defining schema names for the objects and the current project's schema names. All of the methods of the new interfaces rely on the defining schema names, but you can safely cast the returned objects to your current schema names.

The goal of this effort was to make it easier to write custom GUI components that rely on the defining schema names for object interfaces, so that you should be able to just reference the jars that provide those custom GUI components, wire them to your projects GUI factories, and automatically use the customized screen components.

It isn't perfect, but it's the best I could do to address what I saw as a glaring flaw with the code base. Of course, the downside is that you may have to do more typecasting in some of your code. There are always trade-offs when designing an architecture.

Another benefit of the new approach is that it is made very clear that you are using the objects and interfaces from a referenced schema/project, an issue which was concerning me as some people might have taken the approach of ignoring the license requirements of the referenced schemas because the code gets re-manufactured into their project. Now there is a clear delineation between the referenced objects and the current project, preventing anyone from pretending they "didn't know" they had to abide by the licenses of referenced projects.

http://msscodefactory.sourceforge.net/

User Journal

Journal Journal: MSS Code Factory 2.3.12932 Released to production!

MSS Code Factory 2.3 adds support for the specification of ServerProc, ServerObjFunc, and ServerListFunc methods that are performed at the server end and atomically committed when invoked by an XMsgClient application.

The 2.3 series also reworks the way that licensing and copyright information are tracked by the manufactured code. Now the license and copyright information of the originating project is used, instead of that of the project that is being manufactured. Just because you included a model someone else designed does not mean you get to take credit for that work.

There will be additional service packs adding new functionality to the 2.3 series, but those enhancements will not require further changes to the GEL engine, only the rule base.

http://msscodefactory.sourceforge.net/

User Journal

Journal Journal: I don't understand this Google vs. Oracle thing

For the life of me, I do not understand why Google doesn't just ship an ARM64 build of OpenJDK instead of futzing around with this fight against Oracle. From a pure developer's perspective, the whole thing is flat out STUPID.

Oracle is not preventing Google from shipping their own build of the JDK. They're just stopping them from breaking Java's portability requirement by shipping non-Java bytecode.

Java is not a compiler kit.

User Journal

Journal Journal: April 2015 has been a busy month

April 2015 has been a busier month than I'm used to.

I got MSS Code Factory 2.1 Service Pack 1 out the door after over two months of work.

I packed up and moved to a new apartment.

Last but not least, I installed Ubuntu 14.04.2 LTS on my failing Debian box. I still haven't done any more work on the Windows 7 laptop to get it into a development-usable state, but since I did all that performance tuning on MSS Code Factory 2.1, I really don't need to use the Windows laptop. In fact, the poor beast is so I/O bound when running 2.1 that it sounds like the hard drive is about to rupture and spew it's guts out the keyboard when MSS Code Factory is running.

The shift to Ubuntu 14.04.2 from Debian 7 was a last-ditch attempt to resolve an X-Server crash issue (white-out screen in NVidia 8600-series hardware with NVidia drivers.) Although I did see one such crash on Ubuntu 14.04.2 since installing it in the first week of April, I have not seen it in the ten days since Ubuntu released some X-Server input patches.

So it wasn't entirely the NVidia driver's fault that my X-Server was crashing; there seems to have been some bugs in the input stream processing.

I'm still not 100% confident that the X-Server bug has been resolved, but it's looking like it has. Which is a good thing -- I can't afford to buy a new computer at this time (nor in any reasonably near future, as I'm on disability and get less than $17,000/year to live on here in Saskatchewan, Canada.)

User Journal

Journal Journal: Windows 7 laptop is toast -- hello, Debian 1

My Windows 7 laptop was finally nuked. It was only a matter of time before something got to it -- Windows is a virus vector hell.

I'm downloading Debian for my Lenovo IdeaPad Z580 -- I hope it works. I've never tested the system for Debian compatability, though Lenovo has a good reputation for it.

Sadly, I'm pretty sure it's going to mean losing my glorious 192/24 audio playback, as I can only get 44.1/16 working on the desktop despite it having a HD soundchip. I'm going to miss that...

More to the point, I won't be able to do any further work with Oracle, Sybase ASE, or SQL Server for my pet project. Such is life. What's there at this point works; someone else will just have to pick up the ball for those databases.

User Journal

Journal Journal: MSS Code Factory 1.11.12558 Service Pack 6: It is done!

Service Pack 6 provides move up/down functionality for the Chains for all of the supported databases. Note that the RAM storage does not support Chains or complex object deletes at all -- it's intended for high volume read/update/delete data, such as the call record information for an Asterisk or FreeSwitch PBX system, or the internals of MSS Code Factory itself.

There are some critical bugs fixed with Service Pack 6, including cache integrity bugs that were discovered during testing of the move up/down functionality.

With this release, I think I'm pretty much done with MSS Code Factory 1.11. I can't think of any more functions I'd want to add that I have experience with. Sure I could implement proper login security with hashing algorithms, a JEE server to receive and respond to X(ml)Msg requests, and polish the prototype GUI some more, but that's really not my forte. I spent 30 years as a back end database programmer, tuning servers and wringing every last bit of performance out of database engines that I could.

MSS Code Factory 1.11 now incorporates everything I ever learned about making an RDBMS sing and dance. It provides all the functionality points that I was ever asked to deliver to a front end application programming team, and does it all automagically from a Business Application Model.

It's been 18 years of long hours working on this project to get to this point. The idea was around even longer (I came up with the concept way back in 1987, before I'd even had any experience with data modelling tools.)

Service Pack 6 is, in essence, my life's work. My magnum opus. I have climbed my mountain, and the view is great.

http://msscodefactory.sourceforge.net

User Journal

Journal Journal: MSS Code Factory 1.11 Service Pack 1 released

MSS Code Factory is a model-to-code development tool that provides Java 7 using JDBC and stored procedures for DB/2 LUW, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, and Sybase ASE.

Service Pack 1 corrects defects in the manufactured database schema installation scripts, the core Java ORM objects, the stored procedures, and the JDBC layer. It also adds in the production of an XML messaging based communications framework for doing client-server or web development (you have to code the transport layer, but the message parsers and processing are provided.)

Service Pack 1 also provides a prototype Swing GUI that can be used as-is for performing demos and walkthroughs of a business application model for users, rather than counting on users to understand ERD or UML diagrams. The prototype is entirely factory and interface based, so it can form the basis of a custom user interface by either subclassing the manufactured GUI components produced, or by replacing them wholesale with JInternalFrame and JPanel instances as appropriate (the only requirement is that they implement the interfaces specified by the manufactured objects.)

The source code for the project is hosted at github, but the main project is on SourceForge at http://msscodefactory.sourceforge.net.

The project has been under research and development since Java 1.1 was released in 1997, with the past two years focusing on the 1.11 release.

User Journal

Journal Journal: 24/192 Audio Redux

A while back I put my laptop into forced 24bit/192kHz output mode in order to be able to play some Grateful Dead tracks that were recorded in that format. I've left it at that setting on the Windows 7 laptop because it plays back lower resolution audio just fine.

In fact, it seems to upsample lower resolution audio rather nicely. So while CDs and MP3s still are far from as clean sounding as the Grateful Dead tracks, the upsampling prevents "digital fatigue" and sounds more "musical" than 44.1 Hz output does on my Linux box. So I find myself spending more and more time listening to my music under headphones plugged into the laptop (a rather nice set of Sony noise cancelling full-cup headphones that cost nearly $300 15 years ago -- a gift from good friends.)

For the life of me, I do not understand people who claim they can't hear the difference between 44.1 audio and higher resolutions. They must be deaf. The difference is obvious as night and day, if you know what to listen for.

User Journal

Journal Journal: MSS Code Factory 1.11 has been released to production

This day had to come eventually. It was just a matter of patience, persistence, and time.

Today I released MSS Code Factory 1.11 to production.

This is the first time I've ever released a piece of software because I honestly believe it's ready to be released rather than because some marketing/sales rep or management had set an arbitrary delivery date.

This release was 4 years in development. The project itself was started 18 years ago.

But my baby has all grown up, and it's time to send her out the door into the wild, wild world.

If I were to die today, I'd die knowing I accomplished something with my life.

This has been the mountain I had to climb; the ocean I had to sail; the desert I had to cross. It has been my mission ever since I first conceived of the idea of manufacturing code by reversing the logic of a compiler/parser way back in my University days.

For those of you who are programmers, please download and play.

http://msscodefactory.sourceforge.net/

By the way, as a side effect of the testing and validation of MSS Code Factory itself, I produced CFUniverse, a conglomerate business application model project that is nearly 14,000,000 lines of source code. To put that in perspective, the biggest project I ever worked on was about 1.5 million lines, coded by a team of over 150 developers over a 3 year period. Were you to print out CFUniverse at 100 lines per page, double-sided, you'd need 5 cases of paper plus another 20 reams to do it.

I'd love to dump that sucker on someone's desk for a code review!

User Journal

Journal Journal: MSS Code Factory 1.11 is almost done

Within the next week or few, I should be releasing MSS Code Factory 1.11 to production.

1.11 has been a 4 year effort, kickstarted by some rule sets from previous versions of the tool. Each of the earlier versions encountered problems which sent me back to the drawing board to resolve the issues I encountered, going so far as to migrate the core engine code to C# at one point, and then back to Java again, all in an effort to clean up the last bugs in the core technology (the effort was successful, but it was a good two years of my time to do it.)

As I write this, I realize that it's been roughly 18 years since I created the 1.0 version of MSS Code Factory using Java JDK 1.0. I've believed in the "write once, run anywhere" philosophy since day one, and bought into the "Network Is The Computer" concept as well. Hence my decision to focus the efforts of MSS Code Factory on Java, rather than diverging into other languages such as C# or C++ (although there is absolutely no reason I couldn't produce code for those languages, sharing the same database models and stored procedures that the Java code relies on.)

18 years.

My precious is almost an adult.

Just a few more weeks of database script testing, more to find and correct issues with the Business Application Models than with any expectation of long-term problems with the database installation scripts as manufactured by the tool.

At the point of release as a side-effect of testing, I'll have created CFUniverse 2.0. A mammoth general purpose database/schema/application comprising 366 tables and nearly 14,000,000 lines of source code.

Top that, 'ya slackers!

User Journal

Journal Journal: 16/44.1 vs 24/192 audio

Some people insist the difference between 16/44.1 and 24/192 audio files is "all in your head", because some idiot mathematician says you shouldn't be able to hear the difference. Well, human ears aren't mathematicians, and I can most emphatically hear the difference even with these aging ears when using a $500 set of headphones.

I am absolutely in *glory* listening to The Grateful Dead's "Built to Last" album at 24/192 right now. The cymbals *splash* and the triangles *ring*. The maracas *rustle*. You can hear the *wires* of the snare drum rattling against the drum heads. And most important of all, the overall experience of listening is *soothing* instead of earache-inducing as with dithered audio. You should hear the sax I'm listening to right now -- that's one instrument whose sound I *know*, having played one for nearly 10 years in my youth.

My theory is that people who've been raised on digital audio have never learned to hear the difference between live instruments and digital dithering. They *can't* hear the difference, because they've never been exposed to and learned how to hear the sounds, much as someone who did not grow up amongst the Chinese can't hear the difference between some sounds in their languages.

The psychoacoustic training of one's ears is a very real phenomenon. If you've never learned to hear and listen for something because you've never been exposed to it, you grow to be *incapable* of hearing it without a *lot* of exposure.

User Journal

Journal Journal: I am a T-Rex 2

Smart ass punks think they know *nix history.

I cut my wisdom teeth on a VAX 11/780 running BSD in the fall of 1984.

I PRE-DATE the GPL -- Ricky Stallman was just touring campuses (including the University of Saskatchewan) with his "new" GPL idea when I was learning *nix coding and the ORIGINAL K&R 'C' language.

I've run, coded, and delivered systems on just about every dialect of *nix that ever existed. I AM A DINOSAUR! A T-Rex that will eat your OS/X crap for breakfast.

FORTRAN, COBOL, LISP, Algol, APL, PL/C, K&R 'C', ANSI 'C', C++ (from 1.0), Erlang, Java (from 1.0), Z-80 assembly, 6502 assembly, PDP-11 assembly, VAX assembly, -- hell, when I was programming the Z-80, I didn't even *have* an assembler -- I converted my code into hex and POKE'd it into the machine and saved the memory image to cassette tapes!

RSX-11, BSD on VAX, VMS on VAX, AT&T SVR4, VMS on Alpha, DEC Unix on Alpha, HP1000/A, HP9000, the first release of AIX on POWER, Minux, Linux from Red Hat 5 onwards (including RHEL/CentOS/OracleLinux, Ubuntu, Debian, SuSE, Slackware, and a couple other distros whose names escape me at the moment), every flavour of Windows from 3.11 onwards, Mach (which is merged into OS/X), QNX (now Blackberry 10), SunOS, Solaris, Amiga, Commodore 64, Commodore PET, Apple II, and a few more that I can't remember the names of at the moment.

So go ahead and try to "tell me", kid. I'll run rings around you in coding, hardware, and experience. I GREW UP WITH THE HISTORY YOU ONLY HAVE READ ABOUT. I've been programming longer than most of you pups have been alive!

(Can you tell I'm pissed that some 7-digit luser tried to tell me I'm "probably not even a programmer"? :P :P :P)

User Journal

Journal Journal: Continuation on education 13

Ok, I need to expand a bit on my excessively long post on education some time back.

The first thing I am going to clarify is streaming. This is not merely distinction by speed, which is the normal (and therefore wrong) approach. You have to distinguish by the nature of the flows. In practice, this means distinguishing by creativity (since creative people learn differently than uncreative people).

It is also not sufficient to divide by fast/medium/slow. The idea is that differences in mind create turbulence (a very useful thing to have in contexts other than the classroom). For speed, this is easy - normal +/- 0.25 standard deviations for the central band (ie: everyone essentially average), plus two additional bands on either side, making five in total.

Classes should hold around 10 students, so you have lots of different classes for average, fewer for the band's either side, and perhaps only one for the outer bands. This solves a lot of timetabling issues, as classes in the same band are going to be interchangeable as far as subject matter is concerned. (This means you can weave in and out of the creative streams as needed.)

Creativity can be ranked, but not quantified. I'd simply create three pools of students, with the most creative in one pool and the least in a second. It's about the best you can do. The size of the pools? Well, you can't obtain zero gradient, and variations in thinking style can be very useful in the classroom. 50% in the middle group, 25% in each of the outliers.

So you've 15 different streams in total. Assume creativity and speed are normally distributed and that the outermost speed streams contain one class of 10 each. Start with speed for simplicity I'll forgo the calculations and guess that the upper/lower middle bands would then have nine classes of 10 each and that the central band will hold 180 classes of 10.

That means you've 2000 students, of whom the assumption is 1000 are averagely creative, 500 are exceptional and 500 are, well, not really. Ok, because creativity and speed are independent variables, we have to have more classes in the outermost band - in fact, we'd need four of them, which means we have to go to 8000 students.

These students get placed in one of 808 possible classes per subject per year. Yes, 808 distinct classes. Assuming 6 teaching hours per day x 5 days, making 30 available hours, which means you can have no fewer than 27 simultaneous classes per year. That's 513 classrooms in total, fully occupied in every timeslot, and we're looking at just one subject. Assuming 8 subjects per year on average, that goes up to 4104. Rooms need maintenance and you also need spares in case of problems. So, triple it, giving 12312 rooms required. We're now looking at serious real estate, but there are larger schools than that today. This isn't impossible.

The 8000 students is per year, as noted earlier. And since years won't align, you're going to need to go from first year of pre/playschool to final year of an undergraduate degree. That's a whole lotta years. 19 of them, including industrial placement. 152,000 students in total. About a quarter of the total student population in the Greater Manchester area.

The design would be a nightmare with a layout from hell to minimize conflict due to intellectual peers not always being age peers, and neither necessarily being perceptual peers, and yet the layout also has to minimize the distance walked. Due to the lack of wormholes and non-simply-connected topologies, this isn't trivial. A person at one extreme corner of the two dimensional spectrum in one subject might be at the other extreme corner in another. From each class, there will be 15 vectors to the next one.

But you can't minimize per journey. Because there will be multiple interchangeable classes, each of which will produce 15 further vectors, you have to minimize per day, per student. Certain changes impact other vectors, certain vector values will be impossible, and so on. Multivariable systems with permutation constraints. That is hellish optimization, but it is possible.

It might actually be necessary to make the university a full research/teaching university of the sort found a lot in England. There is no possible way such a school could finance itself off fees, but research/development, publishing and other long-term income might help. Ideally, the productivity would pay for the school. The bigger multinationals post profits in excess of 2 billion a year, which is how much this school would cost.

Pumping all the profits into a school in the hope that the 10 uber creative geniuses you produce each year, every year, can produce enough new products and enough new patents to guarantee the system can be sustained... It would be a huge gamble, it would probably fail, but what a wild ride it would be!

User Journal

Journal Journal: A Perspective on Privacy

No doubt people who've read my posts realize I'm concerned about the NSA spying issue, especially in light of the global cooperation in sharing information between spy networks run by other countries including Australia, New Zealand, Germany, and the UK. Even here in Canada our CSIS uses information collected on their behalf by the US NSA. It's already being abused, with information being fed to the DEA and from there on to police departments in the US, which has nothing to do with the original goal of "catching terrorists."

As my own ISP, SaskTel, leases servers in Florida, my email is monitored. My Google and Yahoo accounts are also monitored. There is no way for me to communicate any more without being tracked.

I've always expected this day would come, because when the internet protocol was designed, one of the key requirements were headers that identified the sender and receiver of data packets. There was no way around this, and there is still no way to avoid such identification (though it can be obfuscated to some degree by protocols like TOR.)

As computers have gotten more powerful, it was inevitable that humanity would have the capability to monitor all communications and track all users. It was just a question of when would it happen, and I must admit I'm surprised that we've come this far in my lifetime.

Unfortunately, it would seem the corporate-led fascists are the ones who are leading the charge. Governments whose leaders no longer respect the will of the people, nor even listen to the concerns of the people, but instead spin the lies suggested by their corporate masters. The world is all about the money nowadays.

Maybe some day we'll see a resurgance of humanism and a more equitable social order based on socialist ideals ala Star Trek, where people work for perks, not survival, but I don't think we're going to see that in my life time. Perhaps we'll never see it, because the more entrenched the elite owners of the corporate world become in their mastery of individual country's governments, the less likely it is that they can be uprooted and removed from the halls of power.

Still, I haven't given up hope on humanity.

I'm just very worried about where things are going to go in my own lifetime, never mind the lifetimes of my nieces and nephews.

Despite the tracking that is possible, people insist on using pseudonyms and aliases for their web accounts. I think that's fundamentally wrong. If you've got any sense of honour, integrity, and personal responsibility, you should not be afraid of having your comments and articles on the 'net associated with who you really are. In fact, you should be proud of who you are, stand up as an individual, and rant with enthusiasm against the evils of the world.

Sure you'll make mistakes. You'll say embarassing things. You'll shove your foot in your mouth up to the knee from time to time. And those mistakes will not be erased from the 'net.

But so what? Everyone is human. If anyone is in error, it's those who insist on judging people by their past mistakes instead of realizing that people screw up, learn from their mistakes, and grow to be better people because of them. I've certainly never worried about being judged by potential employers or friends on the internet.

After all, if I am anything, it is honest and blunt with my opinions. I am the kind of person I want to be and would want for a friend: trustworthy and blunt. I hate double-talking backstabbers with a passion, and wouldn't want to work for a company that would judge me based on my internet social life instead of my job history and quality of my work.

So rave on, rave on, rave on, I shall.

Peace.

Mark Sobkow

Do you suffer painful elimination? -- Don Knuth, "Structured Programming with Gotos"

Working...